繁体   English   中英

操纵主题的意外风格变化

[英]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。 作为一个简单的测试,尝试设置BorderBrushBorderThickness属性,因为这些是绑定到Border的那些属性,看看这是否真的发生在这里。

现在我不确定它将如何解决这种风格。 它需要在您的其他资源字典周围看到更多代码(可能还有其他可能应用的样式)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM