带复选框的ListView问题 [英] ListView With Checkbox Problem
问题描述
专家
我有一个用户控件,其中包含一个如下所示的列表视图:
I have a usercontrol which consists of a listview which is like below:
listview的DataTemplate
DataTemplate of listview
=================
=================
<b;< DataTemplate x:Key =" SFCheckBoxItemTemplate">
< CheckBox
名称="chk"
Tag =" {Binding ValueMember}"
Content ="{Binding DisplayMember}"
IsChecked =""{Binding RelativeSource = {RelativeSource Mode = FindAncestor,AncestorType = {x:Type ListViewItem}},Path = IsSelected}"
保证金="0,2,0,2">
</CheckBox>
</DataTemplate>
<DataTemplate x:Key="SFCheckBoxItemTemplate">
<CheckBox
Name="chk"
Tag="{Binding ValueMember}"
Content="{Binding DisplayMember}"
IsChecked="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListViewItem}},Path=IsSelected}"
Margin="0,2,0,2">
</CheckBox>
</DataTemplate>
ListView
======
< ListView
x:Name ="FilterLstVw"
ItemsSource ="{Binding}"
ItemTemplate ="{StaticResource SFCheckBoxItemTemplate}"
ScrollViewer.HorizontalScrollBarVisibility =已禁用"
ScrollViewer.VerticalScrollBarVisibility =自动"
保证金="2">
</ListView>
<ListView
x:Name="FilterLstVw"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource SFCheckBoxItemTemplate}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Auto"
Margin="2">
</ListView>
现在我将这个列表视图与一个数据表绑定起来
Now i am binding this list view with a datatable like
DataTable数据= GetData();
FilterLstVw.ItemsSource = data.DefaultView;
DataTable data = GetData();
FilterLstVw.ItemsSource = data.DefaultView;
现在的问题是我想获取每个listviewitem的复选框对象.我曾经尝试过这种方法:
Now the problem is i want to get the checkbox object for each listviewitem. I had tried with this method:
for(int i = 0; i< FilterLstVw.Items.Count; i ++)
{
ListViewItem listViewItem = FilterLstVw.ItemContainerGenerator.ContainerFromIndex(i)作为ListViewItem;
b ContentPresenter objContentPresenter = Utility.GetVisualChild< ContentPresenter>(listViewItem);
b DataTemplate objDataTemplate = objContentPresenter.ContentTemplate;
b CheckBox cBox =(CheckBox)objDataTemplate.FindName(" chk,objContentPresenter);
}
for (int i = 0; i < FilterLstVw.Items.Count; i++)
{
ListViewItem listViewItem = FilterLstVw.ItemContainerGenerator.ContainerFromIndex(i) as ListViewItem;
ContentPresenter objContentPresenter = Utility.GetVisualChild<ContentPresenter>(listViewItem);
DataTemplate objDataTemplate = objContentPresenter.ContentTemplate;
CheckBox cBox = (CheckBox)objDataTemplate.FindName("chk", objContentPresenter);
}
但是每次listViewItem返回null时.
But each time listViewItem is returning null.
请帮助我.
此致
P Paul
推荐答案
我相信这可能会有所帮助:
I believe this might help:
http://social.msdn.microsoft .com/Forums/en-US/wpf/thread/81b665eb-7893-49d2-b2fa-104757e11fea
这篇关于带复选框的ListView问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!