【问题标题】:How can I create a style that is not automatically applied?如何创建不会自动应用的样式?
【发布时间】:2016-11-14 18:48:56
【问题描述】:

In this answer 它正在(正确地?似乎..)声称如果您省略 x:Name 属性,则样式会自动应用到任何地方。

如果您没有为每个样式指定标识符,则该样式将应用于与您指定的 TargetType 匹配的所有控件。如果你想让按钮看起来不同,你可以像上面一样做,但也包括那个样式的标识符,它将被每个不同的按钮使用:[...]

但是,当我添加 x:Name 标识符时,它应该自动应用,还是应该?

因为当我尝试这个时:

<Style TargetType="{x:Type TextBlock}" x:Name="RunningTextStyle">
    <Setter Property="FontSize" Value="15" />
</Style>

在我的ResourceDictionary 中以这种方式链接到我的app.xaml

<Application.Resources>
    <ResourceDictionary Source="ApplicationStyles.xaml" />
</Application.Resources>

它仍然会自动应用于所有TextBlocks。

如何创建必须与其标识符一起使用才能显示的样式?

我在 VS2015 中使用 Resharper,当我尝试以这种方式手动将样式添加到 TextBlock 时,x:Key 的名称甚至没有出现:Style="{StaticResource ...}" 定义是一种可能性(我曾经有过这种方式确实如此。它可以工作,但通常它是由 R# 或 VS 宣传的)。

有趣的是,我只剩下几个小时了,我的Button 样式没有自动应用。

【问题讨论】:

    标签: c# wpf xaml resourcedictionary wpf-style


    【解决方案1】:

    给样式一个x:Key="MyArbitraryStyleKey" 属性。它在ResourceDictionary 中,字典中事物的“名称”(形象地说,可以这么说)称为键,当您以这种方式查看时,它确实有意义。从功能上讲,在 XAML 中,x:Namex:Key 调用不同的代码以非常不同的方式做不同的事情,即使起初语义差异感觉有点模糊。

    <Style TargetType="{x:Type TextBlock}" x:Key="RunningTextStyle">
        <Setter Property="FontSize" Value="15" />
    </Style>
    
    ...
    
    <TextBlock 
        Style="{StaticResource RunningTextStyle}" 
        Text="I tried Resharper once. Sent them back their demo, tied to a brick."
        />
    

    如果 Resharper 不喜欢它,请向他们发送错误报告(嘿,事实证明 Resharper 很喜欢它——我收回我所说的一切!)

    【讨论】:

    • 哦...这是 x:Key,而不是 x:Name。我觉得……愚蠢。在这上面浪费了很多时间。谢谢!它根本没有更清晰。
    • 是的,Resharper 现在支持我了。 :) 又出现了!
    • @Mafii 是的,x:Name 用于常规 XAML,x:Key 用于 ResourceDictionary。我想这是有道理的,一旦你记住它。
    • 更具体地说,x:Name是可以表示对象的变量的名称,x:Key是对象存储在字典中时使用的键。
    • EdPlunkett 和@ScottChamberlain,你们真是太棒了!这对我理解为什么x:Key 被称为“x:Key”真的很有帮助!太棒了!
    【解决方案2】:

    只需使用x:Key="RunningTextStyle" insted of x:Name="RunningTextStyle"

    【讨论】:

    • 我接受了 Ed 的回答,因为它更详细,而且他的速度快了 2 分钟。您的回答同样正确(而且更直接!),谢谢您的帮助。
    猜你喜欢
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 2021-10-25
    相关资源
    最近更新 更多