带复选框的ListView问题 [英] ListView With Checkbox Problem

查看:67
本文介绍了带复选框的ListView问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

专家

我有一个用户控件,其中包含一个如下所示的列表视图:

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.Horizo​​ntalScrollBarVisibility =已禁用"
                    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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆