WPF ListBox控件如何使绑定的项使用两组不一样的模板样式

damao_94 2019-09-25 04:15:29
大概需求就是想达成图中那样的效果;

试过

<ListBox.ItemTemplate>
<DataTemplate>
<ListBoxItem Style="{StaticResource ResourceKey={Binding StyleKey}}">
</ListBoxItem>
</DataTemplate>
</ListBox.ItemTemplate>

StyleKey是后台viewmodel的一个属性
设定值为style里面的key值,编译通过,运行报错
有什么办法可以控制绑定后指定项的样式模板
或者如何实现这种效果?
...全文
380 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
exception92 2019-09-26
  • 打赏
  • 举报
回复
查询ItemContainerStyleSelector即可,类似:

 public class ListboxItemStyleSelector : StyleSelector
    {
        public Style lbOptionStyle
        {
            get;
            set;
        }
        public Style ItemImageStyle
        {
            get;
            set;
        }
        public override System.Windows.Style SelectStyle(object item, System.Windows.DependencyObject container)
        {
            return ItemImageStyle 或者 lbOptionStyle;
        }
    }
stherix 2019-09-26
  • 打赏
  • 举报
回复
用ItemTemplateSelector 可以根据不同的数据展示不同的Style https://blog.csdn.net/xuewen880926/article/details/6910588
damao_94 2019-09-26
  • 打赏
  • 举报
回复
感谢二位提供了ItemTemplateSelector的解决方案,拿到电脑我就测试一下; 顺便提一下,用了另外一种办法虽然也达到效果,就在昨天我试着在viewmodel里面定义一个字符串类型属性,值可以分别取lefttoright和righttoleft,可以绑定到前端样式属性值,listbox设置禁用横向滚动条,listboxitem设置很宽很宽,常规属性靠左,特殊属性靠右这样做的话就需要把特殊样式按镜像画,而且不会有宽度自适应我比较急性,所以硬撸了这种样式出来。 最终如果可以我还是会用ItemTemplateSelector实现,就当熟悉熟悉吧
damao_94 2019-09-25
  • 打赏
  • 举报
回复
后来又在VS中发现了这个,可是不会用

8,834

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 组件/控件开发
社区管理员
  • 组件/控件开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧