将 MahApps.Metro 主题和重音应用到其他控件或矩形

Posted

技术标签:

【中文标题】将 MahApps.Metro 主题和重音应用到其他控件或矩形【英文标题】:Apply MahApps.Metro theme and accent to other controls or rectangles 【发布时间】:2014-10-02 23:16:28 【问题描述】:

我试图在我的窗口底部放置一个状态栏,它使用与标题栏相同的配色方案。我知道我缺少的部分是样式继承和/或模板设置,但我已经阅读了几个小时,但我无法弄清楚。

这是我的窗口当前的外观:

它在设计器中的外观如下:

我想要什么:

窗口底部的状态栏反映了标题栏的样式。我认识到我当前的实现可能不太好,所以我也愿意改变我的状态栏定义,如下所示。我尝试使用一个实际的状态栏,但它不会像我想要的那样运行(文本框不会填充空白区域,所以命令行输入文本框很难点击——也许我只是做错了什么)。我假设我也可以像其他任何东西一样将样式应用于矩形,对吧?我错过了一个具有样式属性的关键组件,并且可能是模板或静态资源的用户,但我完全迷失了。

这是我当前的解决方案(一个标签和两个用于状态更新的文本框和一个命令行):

<Grid Grid.Row="1">
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0.5*"/>
        <ColumnDefinition Width="0.5*"/>
    </Grid.ColumnDefinitions>
    <Label Grid.Column="0"/>
    <Grid  Grid.Column="1">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <TextBox Grid.Row="0" Grid.Column="0"/>
        <TextBox Grid.Row="0" Grid.Column="1"/>
    </Grid>
</Grid>

【问题讨论】:

【参考方案1】:

我通过在状态栏网格中使用 AccentColorBrush 资源解决了这个问题。

&lt;Grid Grid.Row="1" Background="DynamicResource AccentColorBrush"&gt;

我通过检查 GitHub 上 MahApps.Metro 中的许多 XAML 文件找到了它。这对某些人来说似乎很明显,但对于尝试学习 XAML/WPF/MVVM 的人来说,这并不是直截了当的。我希望这对我挣扎了很长时间的人有所帮助。

【讨论】:

以上是关于将 MahApps.Metro 主题和重音应用到其他控件或矩形的主要内容,如果未能解决你的问题,请参考以下文章

WPF_MahApps.Metro界面主题使用

WPF_MahApps.Metro界面主题使用

一个Metro风格的开源项目 MahApps.Metro

WPF Mahapps.Metro 设置主题样式

C# WPF UI框架MahApps切换主题

使用 MahApp.Metro 主题自定义 SaveFileDialog