我已经和wpf玩了几个月并取得了不同程度的成功,但这个让我很难过。我有一个包含Expanders的ListBox,如下所示:
<ListBox>
<Expander Header="Options">
<StackPanel>
<CheckBox Content="Option 1" />
<CheckBox Content="Option 2" />
<CheckBox Content="Option 3" />
</StackPanel>
</Expander>
<Expander Header="More Options">
<StackPanel>
<CheckBox Content="Option 1" />
<CheckBox Content="Option 2" />
<CheckBox Content="Option 3" />
</StackPanel>
</Expander>
</ListBox>
我正试图弄清楚如何:
防止扩展器的内容部分在ListBox中选择时更改颜色。我只希望Expander的标题有蓝色背景,而不是CheckBoxes
单击其标题时,在ListView中对所选项目进行扩展。目前,您必须在Expander标题的文本外部单击以使其在列表视图中被选中
答案 0 :(得分:0)
第一个问题的解决方案很简单。只需将其添加到ListBox.Resources
:
<ListBox.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Black" />
</ListBox.Resources>
您可以随意将颜色更改为您喜欢的颜色。
第二个问题的解决方案是远。我想说明在ListBox
内声明控件的距离是远。一个更好的解决方案是创建一个数据类型类,将这些实例的集合绑定到ListBox.ItemsSource
属性,然后创建DataTemplate
来定义每个项目应该是什么样的......这就是你应该声明你的Expander
控件。
在StackOverflow,我们更喜欢每个帖子提出一个问题,请尝试我刚刚建议的内容,必要时在线搜索相关条款,然后回过头来回答一个新问题,向我们展示您的新代码。