首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

创建包含CheckBox的ListBoxItem

虽然是ListView的方法,但它同样适用于ListBox。所以我使用这个方式封装了一个ListBox控件,目前基本上没什么功能,就只是在每个ListBoxItem前面加上一个CheckBox。...以前介绍过如何自定义ItemsControl,要自定义一个ListBox控件,同样需要三部: 定义ListBox 关联ListBoxItem和ListBox 实现ListBox的逻辑 public class...ListBox的IsMultiSelectCheckBoxEnabled和SelectionMode,所以需要给ListBoxItem添加一个Owner属性,并重载ListBox的PrepareContainerForItemOverride...) listBoxItem.Owner = this; } ListBoxItem中使用监视Owner的IsMultiSelectCheckBoxEnabled和SelectionMode...); } 为了使用VisualState我在ControlTemplate多写了80行代码,因为没有用上VisualTransition所以这个ControlTemplate有一些Bug,反正只是用来验证添加的两个

2.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    请来围观:WPF开发的微信客户端!!!

    Image(头像)、Button(未读数)、TextBlock(昵称、时间和聊天内容) ListBoxItem..."> ListBoxItem... 需要注意的是:此处必须要重写控件模板,而不能重写数据模板...通讯录部分,和聊天列表差不多,不过,由于需要进行分组,也就是A、B……这种组合,所以用的Object类型,在点选过程中,通过is来进行判别是不是WeChatUser,如果是,则进行转换,来进一步处理。...最大化问题,是我一直还没有想到好的解决办法,最大化的情况下会占据整个屏幕,而不把状态栏空出来,网上的办法都是重新设置Width和Height,但是这样的话,就要记录原来的大小和位置,一直没有找到可以重写

    1.8K30

    WPF 表单验证之 INotifyDataErrorlnfo 接口的使用示例

    本文将针对 WPF 的 TextBox 文本框,探究其中的一种验证方式 —— 使用 INotifyDataErrorInfo 在数据对象中进行验证。...而按《WPF 编程宝典》一书的描述,INotifyDataErrorInfo 其实可以看作是 IDataErrorInfo 的升级版: IDataErrorInfo 和 INotifyDataErrorInfo...所以,本文直接研究 INotifyDataErrorInfo。后续可能还会研究其它不是针对数据对象的验证方式,这是后话了,暂且不表。...四、实现验证接口 首先我们让绑定基类实现 INotifyDataErrorInfo 接口,实现该接口要实现三个成员: 具体为,一个获取错误列表的方法 GetErrors,一个指示是否存在错误的属性 HasErrors...而两个方法主要是对错误列表进行相应的操作,并且触发变动事件。

    94310

    C# API中的模型和它们的接口设计

    一旦加入真实的验证逻辑,甚至可以忽略IDataErrorInfo的存在。 INotifyDataErrorInfo的常规定义 我将分两次讨论INotifyDataErrorInfo接口。...INotifyDataErrorInfo接口旨在支持Silverlight 4中的异步验证,其基本想法是修改属性会触发服务调用,被调用的服务最终会结束并更新错误状态。...不过,如果你尝试单击“保存”按钮同步检查验证状态,那这就不是一个好办法。 此外,ErrorsChanged理论上可以触发两次:一次是立即触发,另一次是异步验证完成后触发。...它返回的是IEnumerable而不是IEnumerable,这让它看起来就像是一个C# 1的接口,而不是泛型。...但在涉及集合属性时,这可能有点蹊跷,最好是将其封装在类中,而不是尝试构建临时解决方案。 可编辑的对象 与IChangeTracking不同,IEditableObject专门用于UI场景中。

    1.7K20

    Prism 8.0 入门(上):Prism.Core

    Prism 是一个有10年以上历史的框架,而上个月才刚发布了它的 8.0 版本,这意味着现在网上能找到的大部分 Prism 的资料都已经有点过时,连 官方文档 也不例外。...不是 6 分钟,不是 16 分账,是整整 60 分钟,Prism 的旧文档随便打开一篇都吓死人。而 Prism 的各种包更是多到离谱。...除了 INotifyPropertyChanged,绑定机制中另一个十分有用的接口是 INotifyDataErrorInfo,它用于公开数据验证的结果。...Prism 提供了 ErrorsContainer 以便管理及通知数据验证的错误信息。...Event Aggregator 本来Event Aggregator(事件聚合器)或 Messenger 之类的组件本来并不是 MVVM 的一部分,不过现在也成了 MVVM 框架的一个重要元素。

    2.2K40

    如何让 WPF 程序更好地适配 UI 自动化

    虽说 WPF 支持不错,但我还是有几点需要说明一下: 这里我说的是“UI 自动化”,而不是“UI 自动化测试”;前者比后者范围更广泛,因为前者除了能用来做 UI 自动化测试之外,还能同时应用于读屏软件,...然而,实际情况却并不是这样…… 哪些情况会破坏 WPF 的 UI 自动化 很多时候,我们在写代码时,可能太过于关注最终做成了什么样子,而忽略了控件原本的层次结构和属性含义,这就可能导致我们的程序暴露给...尽量保留 WPF 自带的 UI 自动化机制,避免对样式和模板做过于复杂的定制,如果要做,则尽可能使用现成常用的属性,而不是自己定义新属性(例如用好 Content 而不是定义一个新的 TitleText...尽量使用通用控件来做控件对应的交互(例如像一个按钮那就用按钮,像一个组合框那就用组合框),而不是使用 Grid、Border 等用来布局或装饰的控件来随意处理。...; } } 给一个几乎都是图像组成的 ListBox 的 UI 自动化适配例子。

    50320

    深入浅出话命令

    很多界面元素都实现了这个接口,其中包括Button,ListBoxItem,MenuItem等。 命令目标(Command Target):即命令发送给谁,或者说命令作用在谁的身上。...还需要注意,各种控件发送命令的方法不经相同,比如Button和MenuButton在单击时发送命令,而ListBoxItem单击时表示被选中,双击的时候才发送命令。...第二,RountedCommand是一个与业务逻辑无关的类,只负责在程序中跑腿而并不对命令目标进行操作,TextBox并不是由它清空的。那么TextBox的情况操作是谁呢?... Grid.Row="6" x:Name="lbInfos">   ListBox>      不是由命令来决定的,而是由外围的CommandBinding捕获到命令目标受命令激发而发送的路由事件后在其Executed事件处理器中完成的

    1.7K40

    图形化界面的开发(GUI)_Tkinter库的使用-4(Entry+Spinbox+Listbox+Combobox)

    指定文本框内容以何种样式的字符显示,比如密码可以将值设为 show="*" textvariable 输入框内值,也称动态字符串,使用 StringVar() 对象来设置,而...对应着什么时候验证,比如focus是当Entry获得或失去焦点的时候验证,key是当输入框被编辑的时候验证 validatecommand 指定用户自定义的验证函数,该函数只能返回 True 或者 Fasle...控件,关联滚动条 listbox = tk.Listbox(window,selectmode=tk.SINGLE,yscrollcommand=scrollbar.set,height=5) # 向Listbox...中添加元素/也可以通过设定一个元组,使用enumerate()函数来进行遍历 listbox.insert(1, "apple") listbox.insert(2, "banana") listbox.insert...(3, "orange") listbox.insert(4, "grape") listbox.insert(5, "pear") listbox.insert(6, "watermelon") #

    10910

    OEA 中 WPF 树型表格整体重构

    而花较大精力做这件事的原因,主要是因为: 业务中需要支持一系列新功能:整行编辑、上下箭头键进行导航、合计行、锁定列 等。 控件显示性能较差,需要支持列虚拟化。...而每个可视树元素的测量、布局等行为,则是依赖于元素本身的数据,通过元素本身的算法决定。    ...而经常做这些可空性检测的原因是,WPF 控件的设计要求,各控件互相之间没有必然的联系。控件的设计者不会知道该控件会被上层开发人员把它放在哪个控件里。...例如,ListBoxItem 并不一定要放在 ListBox 中才能显示。所以,在开发自定义控件时,尽量不要把控件的可视树关系要求得过于严格。当没有指定的可视树关系时,也不应该抛出异常。...而 ApplyTemplate 方法内部则会通过一个 bool 类型的状态值来检测是否已经应用过模板,以防止重入。

    1.9K60

    c#listbox使用详解和常见问题解决

    关于ListBox ListBox是WinForm中的 列表 控件,它提供了一个项目列表(一组数据项),用户可以选择一个或者多个条目,当列表项目过多时,ListBox会自动添加滚动条,使用户可以滚动查阅所有选项...注意,获取到的是列表选中项的文本内容,而SelectedIndex和SelectedIndeces获取的只是选中项索引(int)。....Items.Remove("在此放入你要移除条目的文本内容"); //删除是用的是文本内容,而不是索引 listBox1.Items.Clear();...因为ListBox的删除要通过指定某项的文本,并且只能一项项的删除,而删除一项后索引又会发生变化,所以新手可能会很惘然。下面提供两种删除方式的代码供新手参考。....SelectedItems.Count-1; i >=0; i--) { //亦是从后删除 listBox1.Items.Remove(listBox1.Items[listBox1

    2.3K30
    领券