wpf listbox 多列重写后 怎么样才能保持 第一行选中后 颜色不变 其他行颜色改变 谢谢

自定义WPF ListBox的选择样式
(下图:进行多项选择的ListBox) 首先介绍一种简单地方法:就是通过自定义SystemColors类的参数来自定义WPF ListBox选择颜色的,SystemColors的HighlightBrushKey和HighlightTextBrushKey分别代表ListBoxItem被选中时文字和背景颜色,没有Highlight的BrushKey代表ListBox没有焦点时的选中项文字和背景颜色: ListBox ListBo
    (下图:进行多项选择的ListBox)
  首先介绍一种简单地方法:就是通过自定义SystemColors类的参数来自定义WPF ListBox选择颜色的,SystemColors的HighlightBrushKey和HighlightTextBrushKey分别代表ListBoxItem被选中时文字和背景颜色,没有Highlight的BrushKey代表ListBox没有焦点时的选中项文字和背景颜色:
&&&&&&&&&ListBox&
&&&&&&&&&&&&&ListBox.Resources&
&&&&&&&&&&&&&&&&&Style&TargetType=&ListBoxItem&&
&&&&&&&&&&&&&&&&&&&&&Style.Resources&
&&&&&&&&&&&&&&&&&&&&&&&&&SolidColorBrush&x:Key=&{x:Static&SystemColors.HighlightBrushKey}&&Color=&Pink&/&
&&&&&&&&&&&&&&&&&&&&&&&&&SolidColorBrush&x:Key=&{x:Static&SystemColors.ControlBrushKey}&&Color=&Gray&/&
&&&&&&&&&&&&&&&&&&&&&&&&&SolidColorBrush&x:Key=&{x:Static&SystemColors.HighlightTextBrushKey}&&Color=&Red&/&
&&&&&&&&&&&&&&&&&&&&&&&&&SolidColorBrush&x:Key=&{x:Static&SystemColors.ControlTextBrushKey}&&Color=&Green&/&
&&&&&&&&&&&&&&&&&&&&&/Style.Resources&
&&&&&&&&&&&&&&&&&/Style&
&&&&&&&&&&&&&/ListBox.Resources&
&&&&&&&&&&&&&ListBoxItem&AAA&/ListBoxItem&
&&&&&&&&&&&&&ListBoxItem&B&/ListBoxItem&
&&&&&&&&&&&&&ListBoxItem&ccc&/ListBoxItem&
&&&&&&&&&/ListBox&
  这样的话,ListBox选中颜色变成了这样:
  可是这种方法仅仅能改变统一的颜色,无法完成其他更多要求。
  那么另一种更强大的方法就是在模板中定义。一种方法就是在控件模板中根据ListBoxItem的IsSelected属性判断是否被选中,然后利用WPF触发器来设置被选中后的样式。但是如果你的ListBox定义了数据模板的话你会发现数据模板是显示在控件模板之上的,因此控件模板上的某些显示元素会被数据模板盖住,如果此类情况发生,那么只能在数据模板上添加选中后的元素设置。这里可以通过一个RelativeBinding = FindAncestor的绑定来寻找可视化树中的ListBoxItem的IsSelected属性来在数据模板中判断ListBoxItem是否被选中。
Tab Control in WPF The Tab control is a common UI element that has been around f...随笔 - 47&
评论 - 31&
&&&&&&&&&&&
当Listbox失去焦点的时候,选中项会从蓝色变成灰色,灰色不大醒目,我们想看清我们选中的是哪一项比较困难,下面的代码可以在Listbox失去焦点的时候把选中项仍然置为蓝色。&Style&TargetType="ListBoxItem"&&&&&&Style.Resources&&&&&&&&&&!--SelectedItem&with&focus--&&&&&&&&&&SolidColorBrush&x:Key="{x:Static&SystemColors.HighlightBrushKey}"&Color="LightBlue"&Opacity=".4"/&&&&&&&&&&!--SelectedItem&without&focus--&&&&&&&&&&SolidColorBrush&x:Key="{x:Static&SystemColors.ControlBrushKey}"&Color="LightBlue"&Opacity=".4"/&&&&&&/Style.Resources&&/Style&&
阅读(...) 评论()4:01:51【 转载互联网】 作者: &&|&责编:李强
&&& &为了解决用户可能碰到关于"wpf中的ListBox如何设置显示的条数"相关的问题,突袭网经过收集整理为用户提供相关的解决办法,请注意,解决办法仅供参考,不代表本网同意其意见,如有任何问题请与本网联系。"wpf中的ListBox如何设置显示的条数"相关的详细问题如下:wpflistbox我的需求是这样的,我希望在ListBox只显示四条&其余的都通过滚动条来托出来,应该如何操作?、===========突袭网收集的解决方案如下===========
解决方案1:那你要估算,listbox的高度,和每条记录的高度,算出一次性可显示的条数,当然,你这里如果确定只显示4条,那就第一次只取4条数据。再通过下拉来展示更多数据。解决方案2:只显示四条&&&&怎么能出现滚动条?解决方案3:引用&2&楼&duanzi_peng&的回复:只显示四条&&&&怎么能出现滚动条?就是因为不只四条,我才想在不托动滚动条的情况下只显示四条啊,其余的要托动解决方案4:引用&1&楼&blogtjf&的回复:那你要估算,listbox的高度,和每条记录的高度,算出一次性可显示的条数,当然,你这里如果确定只显示4条,那就第一次只取4条数据。再通过下拉来展示更多数据。Listbox的大小是根据grid来自适应的解决方案5:引用&4&楼&lcjqq99&的回复:Quote: 引用&1&楼&blogtjf&的回复:那你要估算,listbox的高度,和每条记录的高度,算出一次性可显示的条数,当然,你这里如果确定只显示4条,那就第一次只取4条数据。再通过下拉来展示更多数据。Listbox的大小是根据grid来自适应的自适应的,也能获取到实际的高度的解决方案6:引用&3&楼&lcjqq99&的回复:Quote: 引用&2&楼&duanzi_peng&的回复:只显示四条&&&&怎么能出现滚动条?就是因为不只四条,我才想在不托动滚动条的情况下只显示四条啊,其余的要托动其余的要托动-》&你拖动什么??解决方案7:引用&6&楼&duanzi_peng&的回复:Quote: 引用&3&楼&lcjqq99&的回复:Quote: 引用&2&楼&duanzi_peng&的回复:只显示四条&&&&怎么能出现滚动条?就是因为不只四条,我才想在不托动滚动条的情况下只显示四条啊,其余的要托动其余的要托动-》&你拖动什么??就是下拉啊,显示数据啊解决方案8:引用&7&楼&blogtjf&的回复:Quote: 引用&6&楼&duanzi_peng&的回复:Quote: 引用&3&楼&lcjqq99&的回复:Quote: 引用&2&楼&duanzi_peng&的回复:只显示四条&&&&怎么能出现滚动条?就是因为不只四条,我才想在不托动滚动条的情况下只显示四条啊,其余的要托动其余的要托动-》&你拖动什么??就是下拉啊,显示数据啊连滚动条&都没有,你下拉什么解决方案9:引用&8&楼&duanzi_peng&的回复:Quote: 引用&7&楼&blogtjf&的回复:Quote: 引用&6&楼&duanzi_peng&的回复:Quote: 引用&3&楼&lcjqq99&的回复:Quote: 引用&2&楼&duanzi_peng&的回复:只显示四条&&&&怎么能出现滚动条?就是因为不只四条,我才想在不托动滚动条的情况下只显示四条啊,其余的要托动其余的要托动-》&你拖动什么??就是下拉啊,显示数据啊连滚动条&都没有,你下拉什么。。。。真没法给你解释&你到底用过wpf没有啊解决方案10:引用&9&楼&lcjqq99&的回复:Quote: 引用&8&楼&duanzi_peng&的回复:Quote: 引用&7&楼&blogtjf&的回复:Quote: 引用&6&楼&duanzi_peng&的回复:Quote: 引用&3&楼&lcjqq99&的回复:Quote: 引用&2&楼&duanzi_peng&的回复:只显示四条&&&&怎么能出现滚动条?就是因为不只四条,我才想在不托动滚动条的情况下只显示四条啊,其余的要托动其余的要托动-》&你拖动什么??就是下拉啊,显示数据啊连滚动条&都没有,你下拉什么。。。。真没法给你解释&你到底用过wpf没有啊哦
================可能对您有帮助================
答:使用附加属性ScrollViewer.VerticalScrollBarVisibility="Visible" ===========================================问:wpf listbox 显示不全 而且没滚动条 应该是12条数据的,现在只显示7条,...答:我觉得你是不是没有设置listbox 的高度而造成的这种情况? 假如排出没有设置高度,你可以考虑使用ScrollViewer这个控件把ListBox包裹起来。===========================================问:&ListBox Name="ListBox1" Background="LightCoral" & &ListBox.ItemTem...答:首先,控件的宽度要随外部容器宽度改变而改变的话,只能用grid做容器,并且宽度为*才能达到自适应的效果。 改成这样就可以了!~===========================================问:比如,当item没选中时,显示一个字符串,和一个小图标,当选中时,显示...答:这种效果使用控件模板里面的Trigger是最方便的,你可以check一下===========================================问:界面中有很多控件和容器,想让这个listbox在最上层显示出来,我设置了Pa...答:请问你为啥不用combobox呢?否则的话,就在listbox的外层套层popup。===========================================问:我在WPF项目中添加了一个ListBox,并设置了它的ItemContainerStyle和Ite...答:请详述您要实现的效果,以便给您解决方案。===========================================问:界面中有很多控件和容器,想让这个listbox在最上层显示出来,我设置了Pa...答:在编码的时候将listbox写在后面,这样就可以覆盖在其他控件上面了===========================================问:界面中有很多控件和容器,想让这个listbox在最上层显示出来,我设置了Pa...答:示例: // Loaded 事件代码 var fonts = Fonts.SystemFontFamilies .Select(s =& new { Name = s.Source, Spacing = s.LineSpacing }); lstBox1.ItemsSource = lstBox2.ItemsSource = 示例中的数据源(fonts)是由 LINQ 生成的数据...===========================================问:界面中有很多控件和容器,想让这个listbox在最上层显示出来,我设置了Pa...答:你放如图片的时候总得有个集合吧,比如集合arr{“path”},这个时候你拖拽应该有个事件参数,这个参数.source应该是哪个?取出来就行了===========================================ListBox 选中行发生改变时怎么修改字体颜色_百度知道
ListBox 选中行发生改变时怎么修改字体颜色
提问者采纳
比如我好菜我好菜我好菜我好菜
到这一步是可以用ListBox.DrawItem事件来实现的。
但是选中一行以后,选中行的背景颜色会变成黑色。
所以如果选中黑色项的行,字体会被覆盖掉。所以这时要把黑色项字体变成白色
比如选中第三行则变成我好菜我好菜我好菜----》这行脑补下背景是黑色的=。=,字体是白的我好菜
到这一步还是可以在ListBox.DrawItem事件内来实现。
但是继续从白色项点选到第二行的黑色项后。drawitem这时只会处理第二行的绘制工作。
我好菜我好菜----》这行脑补下背景是黑色的=。=,字体是白的我好菜----》这一行背景变回白色的了,字完全看不到了啊!我好菜
小弟新人菜逼一枚。也没有多少的积分。
第一次发帖,表达的很怪异。希望各位看官能看懂我的意思帮帮忙。。。
------解决方案--------------------------------------------------------
感觉可以增加个中间变量记录上次选中的,当你点击下次的时候在对上次的临时变量进行处理,处理完毕后在把这次选中的赋给临时变量,这样来实现循环处理。
其他类似问题
字体颜色的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C# ListBox添加行如何在第一行显示?刷卡一次添加一行,下一次刷卡,在第一行显示……_百度知道
C# ListBox添加行如何在第一行显示?刷卡一次添加一行,下一次刷卡,在第一行显示……
提问者采纳
LISTBOX1.ITEMS.INSERTAT(0,NEW LISTITTEM('要显示字段','值'))
提问者评价
谢谢,以解决……
其他类似问题
按默认排序
其他1条回答
你把添加进去的一条插入this.ListBox1.Items.Insertat(0,ListItem)ListItem为你的其他原来的所有项
listbox的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 wpf listbox 漂亮样式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信