WPF: 在ListView中添加Checkbox列表

摘要:
基本思想是,当单击CheckBox时:1)获取当前ID。3)如果取消选择行为,请检查全局变量标记是否等于当前ID。如果等于,请将全局变量留空。

描述:ListView是WPF中动态绑定工具的数据容器,本文实现了一个在ListView中显示的供用户选择的列表项目,并且控制列表中选择的项目数量,即实现单选。

XAML中创建ListView,代码如下:

<ListView x:Name="listView_LineOfBusiness" Width="280" Height="220">
    <ListView.View>
        <GridView>
            <GridView.Columns>
                <GridViewColumn>
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <CheckBox Tag="{Binding Id}" Click="cbClick_LineOfBusiness"/>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Deliver Channel" />
                <GridViewColumn DisplayMemberBinding="{Binding Parent_Name}" Header="Line Of Business" />
            </GridView.Columns>
        </GridView>
    </ListView.View>
</ListView>

效果:

WPF: 在ListView中添加Checkbox列表第1张

控制用户选择项目的数量, 通过声明一个全局变量,然后在CheckBox的Click事件中检查这个全局变量是否为空来实现。

其基本思想是当CheckBox被单击时:

1) 获取当前的Id。

2) 检查行为是否是选中,检查全局变量tag是否为空,若空,则直接将Id付给全局变量。若全局变量不为空,告知用户只能选择一个,并取消选中行为。

3) 若行为是取消选则,检查全局变量tag是否与当前Id相等,若相等,将全局变量置空。

string selectedLineOfBusinessTag = string.Empty;
private void cbClick_LineOfBusiness(object sender, RoutedEventArgs e)
{
    CheckBox ck_Selected = sender as CheckBox;
    string tag = ck_Selected.Tag.ToString();
    if (ck_Selected.IsChecked==true)
    {
        if (string.IsNullOrEmpty(selectedLineOfBusinessTag))
            selectedLineOfBusinessTag = tag;
        else
        {
            MessageBox.Show("Only one Choice can be seleted.");
            ck_Selected.IsChecked = false;
        }
    }
    else if(ck_Selected.IsChecked==false)
    {
        if (selectedLineOfBusinessTag == tag)
            selectedLineOfBusinessTag = string.Empty;
    }            
}

免责声明:文章转载自《WPF: 在ListView中添加Checkbox列表》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇tomcat环境变量的设置(不在系统中设置环境变量,可以直接运行)使用阿里ARouter路由实现组件化(模块化)开发流程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android 路由框架ARouter最佳实践

一:什么是路由? 说简单点就是映射页面跳转关系的,当然它也包含跳转相关的一切功能。 二:为什么需要路由 Android系统已经给我们提供了api来做页面跳转,比如startActivity,为什么还需要路由框架呢?我们来简单分析下路由框架存在的意义: 在一些复杂的业务场景下(比如电商),灵活性比较强,很多功能都是运营人员动态配置的,比如下发一个活动页面...

WPF中RadioButton绑定数据的正确方法

RadioButton一般用于单选的时候,也就是从一组值中选择一个值。 比如性别有“男”和“女”两种取值,而对于一个员工的实例来说,性别的取值要么是男,要么是女。 这种时候一般就会用到RadioButton。 RadioButton有一个IsChecked属性用于表示是否选中,IsChecked属性的值类型是bool,只能直接绑定bool类型的值。 然而对...

java连接oracle数据库详细代码

详细代码: import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException; public  class  DBUtil(){ p...

【转】Android世界的Swift

最近Oracle又在和Google撕的厉害,才知道还有这么Kotlin在Android像Swift在Mac的地位一说。 Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计开发并开源。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性,比如,高阶函数、操作符重载、字符串模板。它与Java高度可互操作,可以...

关于Android中的三级缓存

三级缓存的提出就是为了提升用户体验。当我们第一次打开应用获取图片时,先到网络去下载图片,然后依次存入内存缓存,磁盘缓存,当我们再一次需要用到刚才下载的这张图片时,就不需要再重复的到网络上去下载,直接可以从内存缓存和磁盘缓存中找,由于内存缓存速度较快,我们优先到内存缓存中寻找该图片,如果找到则运用,如果没有找到(内存缓存大小有限),那么我们再到磁盘缓存中去找...

java根据图片路径下载图片并保存到本地目录

importjava.io.File; importjava.io.FileOutputStream; importjava.io.InputStream; importjava.io.OutputStream; importjava.net.URL; importjava.net.URLConnection; publicclassDownloadIma...