Функциональность списка удаления элемента? - PullRequest
0 голосов
/ 19 марта 2012

Как найти идентификатор элемента при удалении элемента в списке?

<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)
        {


        }

Но как найти конкретный идентификатор элемента при удалении элемента. Как найти конкретный идентификатор для удаления элемента?

Ответы [ 3 ]

2 голосов
/ 19 марта 2012

Применить тег к кнопке.

<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
        }
2 голосов
/ 19 марта 2012

Один из способов - привязать свойство Tag кнопки к значимому идентификатору, а затем в своем методе удаления использовать следующий код:

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

0 голосов
/ 19 марта 2012

Нет необходимости присваивать вам тег Button и сделать ваш xaml уродливым, вы можете получить DataContext от кнопки.

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

     //Delete entity
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...