0

ListBox 的 ItemSource 是动物的 ObservableCollection。每只动物都有一个名称和一个 ID。在显示动物名称的 TextBlock 内,我有一个 ContextMenu。长按时,它会显示一个菜单取消关注。单击该菜单时,它会引发 UnFollow_OnClick 事件。

现在我的问题是,我怎样才能在我的代码中获取动物的 ID?

尝试了一些不同的场景,但找不到任何可行的解决方案。

 <ListBox x:Name="AllAnimals" Margin="0,0,-12,0" ItemsSource="{Binding AllAnimals}">
               <ListBox.ItemTemplate>
                  <DataTemplate>
                     <StackPanel Margin="0,0,0,17">
                        <TextBlock Text="{Binding Name}" TextWrapping="NoWrap" Style="{StaticResource PhoneTextExtraLargeStyle}">
                           <toolkit:ContextMenuService.ContextMenu>
                              <toolkit:ContextMenu IsZoomEnabled="False">
                                    <toolkit:MenuItem Header="Unfollow" Click="UnFollow_OnClick" />
                              </toolkit:ContextMenu>
                           </toolkit:ContextMenuService.ContextMenu>
                        </TextBlock>
                     </StackPanel>
                  </DataTemplate>
               </ListBox.ItemTemplate>
            </ListBox>

private void UnFollow_OnClick(object sender, RoutedEventArgs e)
{  

}
4

2 回答 2

2

这应该工作:

    private void UnFollow_OnClick(object sender, RoutedEventArgs e)
    {
        Animal animal = ((Animal)((sender as FrameworkElement).DataContext));

        MenuItem item = (sender as MenuItem);
        string itemValue = item.Header.ToString();

        if (itemValue == "Unfollow")
        {
            try
            {
                if (animal != null)
                {
                    // animal.Id
                }
            }
            catch (Exception)
            {
            }
        }
    }
于 2013-04-12T14:49:55.960 回答
0

尝试这个:

 private void UnFollow_OnClick(object sender, RoutedEventArgs e)
    {
        var animal = AllAnimals.SelectedItem as Animal;
        if(animal==null) return;
        var id = animal.Id;
    }

希望它的帮助。

于 2013-04-12T10:51:23.170 回答