如何在不覆盖Mahapps主题的情况下设置属性?

时间:2013-11-26 23:06:02

标签: c# wpf visual-studio microsoft-metro resourcedictionary

我正在使用Mahapps作为GUI,但是我想设置一些与marginsverticalAlignment等视觉属性不同的属性,所以我将其添加到UserControl.resources部分< / p>

<Style x:Key="{x:Type TextBox}" TargetType="TextBox" BasedOn="{StaticResource ResourceKey={x:Type TextBox}}">
     <Setter Property="Margin" Value="2"/>
     <Setter Property="VerticalAlignment" Value="Center"/>
</Style> 

但是它会覆盖TextBoxes的所有视觉样式属性,如何在不覆盖所有视觉样式设置的情况下添加这些属性?

1 个答案:

答案 0 :(得分:1)

给风格一个关键

<Style x:Key="myCustomTextBoxStyle"
       TargetType="TextBox"
       BasedOn="{StaticResource ResourceKey={x:Type TextBox}}">
  <Setter Property="Margin" Value="2"/>
  <Setter Property="VerticalAlignment" Value="Center"/>
</Style>

并在需要的地方使用

<TextBox Style={StaticResource myCustomTextBoxStyle} />

修改 或者将其放在用户控件或窗口资源的主资源字典中,而不用键

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>

        </ResourceDictionary.MergedDictionaries>

        <Style TargetType="TextBox"
               BasedOn="{StaticResource ResourceKey={x:Type TextBox}}">
          <Setter Property="Margin" Value="2"/>
          <Setter Property="VerticalAlignment" Value="Center"/>
        </Style>
    </ResourceDictionary>
</Window.Resources>

希望有所帮助