2012-03-19 71 views
0

如何在列表框中刪除項目時找到項目標識?列表框刪除項目功能?

<DataTemplate x:Key="ToDoListBoxItemTemplate"> 

      <Grid HorizontalAlignment="Stretch" Width="420"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="30"/> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="Auto" /> 
        <ColumnDefinition Width="100" /> 
       </Grid.ColumnDefinitions> 

       <!--<CheckBox 
        IsChecked="{Binding IsComplete, Mode=TwoWay}" 
        Grid.Column="0" VerticalAlignment="Top"/>--> 

       <TextBlock 
        Text="{Binding subcategname}" 
        FontSize="25" 
        Grid.Column="1" Grid.ColumnSpan="2" 
        VerticalAlignment="Top" Margin="-36, 12, 0, 0"/> 

       <Button         
        Grid.Column="3" 
        x:Name="deleteTaskButton" 
        BorderThickness="0"                 
        Margin="0, -18, 0, 0" Click="deleteTaskButton_Click"> 

        <Image 
        Source="Images/appbar.delete.rest.png" 
        Height="75" 
        Width="75"/> 

       </Button> 
      </Grid> 
     </DataTemplate> 




<ListBox x:Name="FinanceListBox" Margin="0,0,-12,0" ItemsSource="{Binding}" ItemContainerStyle="{StaticResource ListBoxItemStyle1}" ItemTemplate="{StaticResource ToDoListBoxItemTemplate}" SelectionChanged="FinanceList_SelectionChanged"> 
       </ListBox> 

在SelectionChanged事件我寫了下面的代碼。

private void FinanceList_SelectionChanged(object sender, SelectionChangedEventArgs e) 
     { 
      System.Collections.IList list = e.AddedItems; 
      if (e.AddedItems.Count == 1) 
      { 
       IEnumerable<Category> categs = list.Cast<Category>(); 
       Category em = categs.ElementAt<Category>(0); 
       int id = em.id; 
       int categoryid = em.categoryid; 
       string subcategoryname = em.subcategname; 

       NavigationService.Navigate(new Uri(String.Format("/SubCategories.xaml?id=" + id + "&categoryid=" + categoryid + "&subcategoryname=" + subcategoryname), UriKind.Relative)); 
      } 
     } 




private void deleteTaskButton_Click(object sender, RoutedEventArgs e) 
     { 


     } 

但是如何在刪除項目時找到特定的物品ID。 如何找到刪除該項目的特定ID?

回答

2

的方式之一,是按鈕的標籤屬性綁定到一個有意義的標識符,那麼在你的刪除方法使用下面的代碼:

Button b = sender as Button; //and now delete from your collection where id = b.Tag

2

應用標籤按鈕。

<Button         
        Grid.Column="3" 
        x:Name="deleteTaskButton" 
        BorderThickness="0" Tag="{Binding id}"                 
        Margin="0, -18, 0, 0" Click="deleteTaskButton_Click"> 

在代碼:作爲Euqene提到:

private void deleteTaskButton_Click(object sender, RoutedEventArgs e) 
     { 
     Button b = sender as Button; 
     var id = (int)b.Tag;  
     //now do what you want with id 
     } 
0

不需要一個變量分配給您的按鈕,使您的XAML醜,你可以從按鈕獲得的DataContext。

private void deleteTaskButton_Click(object sender, RoutedEventArgs e) 
{ 
    Button deleteButton = (Button)sender; 
    var entity = deleteButton.DataContext as MyEntity; 

    //Delete entity 
}