2010-08-07 122 views
3

我有listBox和ObservableCollection。 listBox.ItemSource(listNotify.ItemSource)被設置爲該ObservableCollection(errosList)。 我的問題是,我不知道如何從錯誤列表中刪除正確的元素,當用戶點擊列表框中的內容x的按鈕。對於listBox的項目,我使用ItemTemplate,在一個stackPanel和一個stackPanel中,我有一個按鈕。 婁是XAML代碼:如何從列表框和ObservableCollection中刪除自定義項,點擊按鈕

<ListBox x:Name="listNotify"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal" Height="35"> 
         <Image Height="16" Source="/Template;component/Resources/error.png" Stretch="Fill" VerticalAlignment="Top" Width="16"/> 
         <StackPanel Orientation="Vertical"> 
          <HyperlinkButton Content="{Binding ErrorHeader}" HorizontalAlignment="Left" Height="16" Width="125"/> 
          <TextBlock Text="{Binding ErrorMessage}" HorizontalAlignment="Left" Width="405" d:LayoutOverrides="VerticalAlignment" /> 
         </StackPanel> 
         <Button Content="x" Width="20" Height="20" Click="removeError_Click"/> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 

的代碼是從一個Silverlight 4項目。 謝謝。

回答

1
private void removeError_Click(object sender, RoutedEventArgs e) { 
    FrameworkElement fe = sender as FrameworkElement; 
    if (null != fe) { 
     _observableCollection.Remove((YourType)fe.DataContext); 

    } 
} 

應該做你想要的。將YourType替換爲您在ObservableCollectiion中聲明的類型。

+0

這個工作,我決心問題。 謝謝HCL。 – tribanp 2010-08-07 09:25:53

0

在你的errorsList-Collection項目中你沒有類似ID的屬性嗎?然後,你可以用按鈕的標籤屬性來archieve此:

<Button Content="x" Width="20" Height="20" Tag="{Binding ID}" Click="Button_Click" /> 

,並在按鈕的點擊事件:

string id = ((Button) sender).Tag.ToString(); 
var itemToRemove = errorsList.Where(x => x.ID == id).First(); 
errorsList.Remove(itemToRemove); 

希望幫助

+0

與id的問題是,我可以有多個id與相同的號碼。 但是,謝謝。 – tribanp 2010-08-07 09:26:37

相關問題