2013-03-16 34 views
0

我有这样的ListView与TextBock和CheckBox:如何获得ListView项标识

<ListView x:Name="ActiveTasksListView" ItemsSource="{Binding Path=ActiveTasks}" SelectedItem="{Binding Id}"> 

<ListView.ItemsPanel> 
    <ItemsPanelTemplate> 
     <StackPanel Orientation="Vertical" Margin="37,0,17,0" /> 
    </ItemsPanelTemplate> 
</ListView.ItemsPanel> 

<ListView.ItemTemplate> 
    <DataTemplate> 
     <Border Background="White"> 
      <TextBlock Text="{Binding Name}" /> 
      <CheckBox Click="CheckBox_Click_1" /> 
     </Border> 
    </DataTemplate> 
</ListView.ItemTemplate> 

</ListView> 

如果我在MessageDialog()

+0

你在哪里需要示出了T他在'TextBlock'中有'Id' – 2013-03-16 00:38:25

+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 – 2013-03-16 00:38:27

+0

你有没有试过通过'ListView.Items [“key”]'来获取它,或者你不能得到'Tag'属性..? – MethodMan 2013-03-16 01:34:36

回答

0
void CheckBox_Click_1(object sender, RoutedEventArgs e) 
{ 
    var cb = sender as CheckBox; 
    dynamic itemVM = cb.DataContext; 
    var id = itemVM.Id; 
} 
0
上复选框单击单击项目的比我需要出示身份证(从数据源)

使用VisualTreeHelper,并点击框元素里,你可以找到一个ListViewItem,然后获取其ID属性

void CheckBox_Click_1(object sender, RoutedEventArgs e) 
{ 
    var item = sender as DependencyObject; 

    while (!(item is ListViewItem)) 
    { 
     item = VisualTreeHelper.GetParent(item); 
    } 

    var id = ((ObjectClass) item).Id; 
}