首页 > 其他 > 详细

WPF界面设计技巧(8)—自制山寨版CheckListBox

时间:2014-03-04 18:03:48      阅读:453      评论:0      收藏:0      [点我收藏+]
原文:WPF界面设计技巧(8)—自制山寨版CheckListBox

 bubuko.com,布布扣

     

    近年来IT市场山寨横行啊,我们今天也来发扬一下山寨精神,搞个自制的CheckListBox出来。

     

    喏,CheckListBox 就是下面这玩意啦:

     

     

    bubuko.com,布布扣 

    为什么要搞它?我们是山寨耶,说搞谁就搞谁!

     

    我也不知道为什么,WPF里没有提供 CheckListBox 控件,但凭借WPF强大的外观定制能力,我们可以轻松的创制一个自己的 CheckListBox

     

    CheckListBox 的基本功能其实和 ListBox 没有太大出入,只要将普通的ListBox 的选择模式设为多选,它就能基本实现 CheckListBox 的功用了,只不过从用户角度来说,它的使用方式不如 CheckListBox 看起来那么明确而已。

     

    我们接下来就仅仅采用外观修改的方法,将 ListBox CheckBox 拼插,打造出无敌山寨版 CheckListBox 

     

    首先在窗体设计器中建立一个ListBox,并为之填入一些内容项:

     

     

    bubuko.com,布布扣 

    然后我们把第四讲时的列表样式代码COPYApp.xaml里去:

     

     

    bubuko.com,布布扣Code

     

    修改 ContentPresenter 元素处的代码,用一个 CheckBox 将其包起来:

     

     

    bubuko.com,布布扣 

     

     

    bubuko.com,布布扣<CheckBox Margin="2,0,0,0" VerticalAlignment="Center" IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent},Path=IsSelected,Mode=TwoWay}">
    bubuko.com,布布扣  
    <ContentPresenter Margin="2"/>
    bubuko.com,布布扣
    </CheckBox>

     

     

    从上面的代码我们可以看到,CheckBox IsChecked 属性双向绑定到了列表项的 IsSelected 属性上,这时勾选 CheckBox 就会使列表项被选中,反之亦然,这就是模拟 CheckListBox 的技术核心所在。

     

    现在我们的界面是这个样子了:

     

     

    bubuko.com,布布扣 

    再完成最后一步,修改 ListBox 的选取模式为多选:

     

     

    bubuko.com,布布扣 

    OK,运行一下就是这样了:

     

     

    bubuko.com,布布扣 

    简直和真的一样!

     

    如何通过代码获取选定的项呢?这样就可以了:listBox1.SelectedItems

     

    再附送一个小经验:当你程序运行后,在窗体的“Initialized”事件中自动从配置文件读取到数据,并将之绑定到 ListBox 后,想要将其默认设为全选的话,应当在窗体的“ContentRendered”事件中执行全选命令“listBox1.SelectAll()”,在“Loaded”、“Initialized”等事件中执行均无效,推测可能是控件载入到绑定数据之间会存在一定延迟。

     

    最后是广告:本大寨主征押寨夫人数名,名额无限,先到为大。

     

    源代码下载

WPF界面设计技巧(8)—自制山寨版CheckListBox,布布扣,bubuko.com

WPF界面设计技巧(8)—自制山寨版CheckListBox

原文:http://www.cnblogs.com/lonelyxmas/p/3579506.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!