【问题标题】:MahApps Metro setting Window Border styles from App ResourcesMahApps Metro 设置来自 App Resources 的 Window Border 样式
【发布时间】:2014-06-20 22:30:37
【问题描述】:

我正在尝试为我的 MahApps Metro 应用程序设置窗口边框样式。我已经阅读了有关如何设置不同边框样式的文章,我想我明白了。但是,我正在尝试将应用程序中所有窗口的边框样式设置为相同(全部为投影),但它似乎不想工作。

我的应用资源如下所示:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/GSDXThemes;component/GSDXDarkYellowTheme.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

我的资源字典如下所示:

<!-- Merge in ResourceDictionaries defining base styles to use. This theme is based on the Metro Dark Yellow theme. -->
<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Yellow.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" />
    <ResourceDictionary Source="pack://application:,,,/GSDXThemes;component/GSDXControlStyles.xaml" />
</ResourceDictionary.MergedDictionaries>

GSDXControlStyles 字典只是为我的应用设置了一些自定义样式值。我尝试在这个文件中设置窗口边框。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:resx="clr-namespace:GSDXThemes.Properties"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:System="clr-namespace:System;assembly=mscorlib"
                xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
                xmlns:GSDUserControls="clr-namespace:GSD.CommonGUI.UserControls;assembly=CommonGUI">

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
</ResourceDictionary.MergedDictionaries>

<!-- Now customize the theme for our use...mostly just changing font sizes, etc...-->
<Style TargetType="{x:Type Controls:MetroWindow}" >
    <Setter Property="WindowTransitionsEnabled" Value="False" />
    <Setter Property="EnableDWMDropShadow" Value="True" />
</Style>

<Style TargetType="{x:Type Label}" BasedOn="{StaticResource MetroLabel}">
    <Setter Property="FontSize" Value="16"/>
</Style>

<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource MetroTextBox}">
    <Setter Property="FontSize" Value="16"/>
</Style>
...

所有其他样式设置都可以正常工作。但是设置窗口边框的第一行什么也没做。我所有的窗口都显示没有边框。

我怎样才能让它工作,以便所有 Windows 都有投影边框?

【问题讨论】:

    标签: wpf mahapps.metro


    【解决方案1】:

    你必须给你的风格一把钥匙才能得到一个可行的解决方案

    <Style x:Key="CustomDefaultWindowStyle"
           TargetType="{x:Type Controls:MetroWindow}"
           BasedOn="{StaticResource {x:Type Controls:MetroWindow}}" >
        <Setter Property="WindowTransitionsEnabled" Value="False" />
        <Setter Property="EnableDWMDropShadow" Value="True" />
    </Style>
    

    现在在你所有的MetroWindows 上使用这种风格

    <Controls:MetroWindow x:Class="YourWindowClass"
                          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                          xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
                          xmlns:System="clr-namespace:System;assembly=mscorlib"
                          Title="Custom Window Style Demo"
                          Height="600"
                          Width="800"
                          WindowStartupLocation="CenterScreen"
                          Style="{DynamicResource CustomDefaultWindowStyle}">
    ...
    </Controls:MetroWindow>
    

    (不要害怕'Invalid style target type:...'消息,这是VS的bug)

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多