zoukankan      html  css  js  c++  java
  • WPF: 在ListView中添加Checkbox列表

    描述: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>

    效果:

    控制用户选择项目的数量, 通过声明一个全局变量,然后在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;
        }            
    }
  • 相关阅读:
    NIO中几个非常重要的技术点
    NIO的epoll空轮询bug
    mysql支持跨表删除多条记录
    使用Fastjson生成Json字符串少字段属性(数据丢失)
    Linux系统下安装rz/sz命令及使用说明
    Slave_SQL_Running: No mysql同步故障
    二次幂权限设计
    spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)
    XStream别名;元素转属性;去除集合属性(剥皮);忽略不需要元素
    JDBC通用DAO
  • 原文地址:https://www.cnblogs.com/qixue/p/8574255.html
Copyright © 2011-2022 走看看