【问题标题】:Apply Style to all child-elements of specific type将样式应用于特定类型的所有子元素
【发布时间】:2013-01-14 13:14:23
【问题描述】:

我想为 wpf 编写一个样式,其中 StatusBar 中的所有按钮(具有定义的样式)具有相同的样式(例如宽度)。

这是我的风格:

<Style TargetType="{x:Type StatusBar}"
               x:Key="DialogBoxStatusBarStyle">
    <Setter Property="Background"
                    Value="LightGray" />
    <Setter Property="Padding"
                    Value="5" />

    ...?

</Style>

以及元素的 xaml:

<StatusBar Style="{StaticResource ResourceKey=DialogBoxStatusBarStyle}" Grid.Row="3"
               FlowDirection="RightToLeft">
        <Button Content="Übernehmen"
                Width="100"
                HorizontalAlignment="Right" />
        <Button Content="Abbrechen"
                Width="100"
                HorizontalAlignment="Right" />

        <Button Content="OK"
                Width="100"
                HorizontalAlignment="Right" />
    </StatusBar>

在最终版本中,我不想将所有按钮的宽度设置为 100。这应该以StatusBar 的样式定义,或者更好地以StatusBar 的按钮子样式定义。

【问题讨论】:

    标签: c# wpf xaml styles


    【解决方案1】:

    您可以为您的DialogBoxStatusBarStyle 的Resources 添加按钮的默认样式:

    <Style TargetType="StatusBar" x:Key="DialogBoxStatusBarStyle">
        <Style.Resources>
            <Style TargetType="Button">
                <Setter Property="Width" Value="100"/>
            </Style>
        </Style.Resources>
        ...
    </Style>
    

    【讨论】:

      【解决方案2】:

      要扩展上面的答案 (@Clemens),您甚至可以这样做,以独立重用按钮样式,并将其应用于特定容器的子项。

      样式:

      <Style TargetType="{x:Type Button}" x:Key="MyButtonStyle">
          <Setter Property="Width" Value="100" />
          <Setter Property="HorizontalAlignment" Value="Right" />
      </Style>
      
      <Style TargetType="{x:Type StatusBar}" x:Key="DialogBoxStatusBarStyle">
          <Setter Property="Background" Value="LightGray" />
          <Setter Property="Padding" Value="5" />
      
          <Style.Resources>
              <Style TargetType="{x:Type Button}" BasedOn="{StaticResource MyButtonStyle}" />
          </Style.Resources>
          ...
      </Style>
      

      【讨论】:

        猜你喜欢
        • 2018-05-19
        • 1970-01-01
        • 2011-01-02
        • 2014-12-08
        • 2018-03-16
        • 1970-01-01
        • 2013-10-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多