如何申请materialDesign:ColorZoneAssist.Mode =" Accent"在代码背后

时间:2018-04-26 13:33:55

标签: c# wpf material-design

我一直在尝试使用MaterialDesign for WPF在代码中动态渲染一个组框几天。在我收到另一个StackOverflow问题的帮助后,我能够使用下面一行的材料设计风格来渲染它:

childDef.Style = Application.Current.FindResource("MaterialDesignGroupBox") as Style;

我想要实现的是使用应用程序的已定义材质设计强调颜色渲染它,而不是作为资源" MaterialDesignGroupBox"的默认颜色的主要颜色。在Material Design的WPF演示项目中,这是他们在xaml中的表现方式:

<smtx:XamlDisplay Key="groupbox_4" Grid.Column="0" Grid.Row="1">
    <GroupBox Header="Accent Header" Style="{DynamicResource MaterialDesignGroupBox}" Margin="16" materialDesign:ColorZoneAssist.Mode="Accent">
        <TextBlock>My Content</TextBlock>
    </GroupBox>
</smtx:XamlDisplay>

所以,我本来想要做的事情,我一直无法弄清楚到目前为止如何应用 materialDesign:ColorZoneAssist.Mode =&#34; Accent&#34; 在代码背后。我提前感谢任何人。

1 个答案:

答案 0 :(得分:2)

默认GroupBox样式(MaterialDesignGroupBox)uses an attached property来控制其内部ColorZone的模式。您可以在后面的代码中设置附加属性,如下所示:

GroupBox groupBox = ...;
MaterialDesignThemes.Wpf.ColorZoneAssist.SetMode(groupBox, ColorZoneMode.Accent);