从主题

时间:2018-03-20 20:40:18

标签: wpf xaml themes

我已将MaterialDesignInXamlToolkit主题应用于我的项目。我注意到它可能在我的ListView中产生了一个不需要的矩形区域。 Snoop表示这个不需要的区域是名为" Bd"的项目的一部分。 (ListBoxChrome。)

enter image description here

enter image description here 在实验中,我已将默认的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元素是一个装饰器,是aero theme的一部分。看起来它不在空列表中,但在声明ListView.View时添加。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

我无法重现您的问题,但我确实有一些想法。

鉴于b = [val if idx == np.argmax(a) else 0 for idx,val in enumerate(a)]来自PresentationFramework.Aero,我怀疑它只会显示在使用Aero的系统上(只是猜测)。

我认为最大的线索来自你的snoop截图。 ListBoxChrome元素的名称是“Bd”。如果你search the MDIX library for this,你只能找到一些引用它。但是,只有几个实例“Bd”元素是未命名的ScrollViewer的直接父级。最可能的候选者是ListBox template中的候选者,因为ListView派生自ListBox。作为一个简单的测试,请尝试设置ListBoxChromeBorderBrush属性,因为这些是绑定到边框的属性,看看这是否真的发生在这里。

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