[英]Manipulating unintended style change from theme
我已将MaterialDesignInXamlToolkit主题应用于我的项目。 我注意到它可能在我的ListView中产生了一个不需要的矩形区域。 Snoop表示这个不需要的区域是名为“Bd”(ListBoxChrome)的项目的一部分。
在实验中,我将默认的ListView和ListViewItem样式应用于此ListView的父级:
父UserControl:
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="../DefaultWPFSyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
...
DefaultWPFStyles,XAML:
...
<Style TargetType="ListView"/>
<Style TargetType="ListViewItem"/>
...
打算重置这些风格,没有运气。 我想知道是否有人可以提出解决方法。 我正在研究如何查找和直接操作ListBoxChrome对象。
*编辑
我回滚到之前的构建,看到ListBoxChrome已经存在。 我还在Blend中编辑了ListView的副本,希望能够访问chrome对象,但它不是生成的xaml ListView样式。
额外的空间是组头的大小,所以我想知道是否在某处应用了一些偏移量。
*编辑ListBoxChrome元素是装饰器,是航空主题的一部分。 看起来它不在空列表中,但在声明ListView.View时添加。
我无法重现你的问题,但我确实有一些想法。
鉴于ListBoxChrome
来自PresentationFramework.Aero,我怀疑它只会出现在使用Aero的系统上(只是一个猜测)。
我认为最大的线索来自你的snoop截图。 ListBoxChrome
元素的名称是“Bd”。 如果您在MDIX库中搜索它,您将只能找到它的几个引用。 但是,只有几个实例“Bd”元素是未命名的ScrollViewer的直接父级。 最可能的候选者是ListBox模板中的候选者,因为ListView派生自ListBox。 作为一个简单的测试,尝试设置BorderBrush
, BorderThickness
属性,因为这些是绑定到Border的那些属性,看看这是否真的发生在这里。
现在我不确定它将如何解决这种风格。 它需要在您的其他资源字典周围看到更多代码(可能还有其他可能应用的样式)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.