在XAML工具包中使用Material Design时WPF覆盖ListViewItem样式

as9*_*s94 5 wpf styles listviewitem material-design-in-xaml

我将XAML工具包中的Material Design安装到了我的项目中。我有ListView本身包含GridView(带有GridViewColumns),我想重写此表中每一行的样式。但是在每种情况下,我都会从XAML Toolkit中的Material Design中丢失样式。

我尝试做几件事:

1)根据目标类型覆盖现有样式:

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem" BasedOn="{StaticResource {x:Type ListViewItem}}">
        <Setter Property="Background" Value="Green" />
    </Style>
</ListView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)

我有重载的样式,但是在这种情况下,我在GridView中失去类型识别(列包含正确的标题,但是值包含模型的调用结果ToString()方法)

2)我使用了XAML Toolkit中的Material Design中的具体样式-MaterialDesignGridViewItem:

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem" BasedOn="{StaticResource MaterialDesignGridViewItem">
        <Setter Property="Background" Value="Green" />
    </Style>
</ListView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我得到了工作解决方案(似乎),但是当我确实添加触发器时,我失去了材质样式(仅获得颜色,而没有动画)。

3)在其他情况下,我会丢失所有材质样式,并返回到WPF默认样式。

希望对我们有所帮助。

Bre*_*ing 9

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem" BasedOn="{StaticResource MaterialDesignListBoxItem">
        <Setter Property="Background" Value="Green" />
    </Style>
</ListView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)

您的扩展样式应基于 MaterialDesignListBoxItem,而不是使用 MaterialDesignGridViewItem。

  • 截至今天,在版本 2.5.1 中,样式似乎必须基于 **MaterialDesignGridViewItem** 才能正常工作。 (3认同)