【问题标题】:Cant access styles on Nested WPF Style [closed]无法访问嵌套 WPF 样式的样式 [关闭]
【发布时间】:2018-08-15 16:10:27
【问题描述】:

我已经概括了我的表单,并且我为每种类型的表单设计了通用样式:

 <Style TargetType="UserControl" x:Key="ViewForm">
     <Setter Property="Padding" Value="18"></Setter>
     <Style.Resources>
         <Style TargetType="TextBlock">
             <Setter Property="FontFamily" Value="{StaticResource IranSans}"/>
             // ...
         </Style>

         <Style TargetType="TextBlock" x:Key="Right">
             <Setter Property="FontFamily" Value="{StaticResource IranSans}"/>
         </Style>

         <Style TargetType="TextBlock" x:Key="Left">
             <Setter Property="FontFamily" Value="{StaticResource IranSans}"></Setter>
             // ...
         </Style>

         <Style TargetType="Label">
             <Setter Property="FontFamily" Value="{StaticResource IranSans}"/>
             // ...
         </Style>
     </Style.Resources>
 </Style>

我在我的UserControls 中使用它我希望能够为我的TextBlocks 使用LeftRight 样式,但我无法访问它们。例如:

 <TextBlock Grid.Row="3" Style="{StaticResource Right}">Email :</TextBlock>

*** 没有x:Key="SomeKey..."的Styles一切都好

我该怎么办?

【问题讨论】:

    标签: c# wpf styles


    【解决方案1】:

    用户控件“资源”和用户控件“样式资源”是两个不同的东西。用户控件的嵌套控件(如文本框、标签)可以访问“资源”而不是“样式资源”。

    所以正确的做法是-

    <UserControl>
    <UserControl.Resources>
      <!-- Place all styles that you want to put over child controls -->
    </UserControl.Resources>
    <UserControl.Style>
      <Style>
            <Style.Resources>
                 <!-- Place all styles that you want to use within this style -->
            </Style.Resources>
       </Style>
    </UserControl.Style>
    </UserControl>
    

    【讨论】:

    • 谢谢,我不想把所有的样式都放到每一页。经过一些尝试,我将这些样式放在了资源字典中,并通过 MergedDictionaries 将它们添加到我的用户控件中。我们可以通过 Style 设置 UserControl 的资源吗?如果可能的话,我想将这些样式添加到 UserControl 的样式中
    • 您可以将所有子控件样式放在全局资源字典中并从那里访问它,而不是将其保存在单个用户控件文件中。只有事物子样式不应该放在其他类型的
    • 所以我们不能像在 CSS 中那样以嵌套的方式设置控件的样式吗? (在 CSS 中,我们的样式 .Class1 .Class2 {.....} 有一个这样的 Selector,这是一个嵌套样式)
    • @RezaNoei 我不认为,WPF 支持这样的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 2016-12-11
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    相关资源
    最近更新 更多