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>
它仍会自动应用于所有TextBlock
。
如何创建必须与其标识符一起使用的样式才能显示?
我在VS2015中使用Resharper,当我尝试以这种方式手动将样式添加到x:Key
时,TextBlock
名称甚至都没有显示:Style="{StaticResource ...}"
定义为可能性(我曾经用过这种方式,但确实如此。它可以工作,但通常是由R#或VS广告来使用)。
有趣的是,我只有几个小时才开始相反,我的Button
样式没有自动应用。
答案 0 :(得分:3)
为Style添加x:Key="MyArbitraryStyleKey"
属性。它位于ResourceDictionary
,&#34;名称&#34; (比喻,可以这么说)字典中的一个东西叫做一个密钥,当你以这种方式看待它时,它确实有意义。功能上,在XAML中,x:Name
和x: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很喜欢它 - 我收回了我所说的一切!)
答案 1 :(得分:3)
只需使用x:Key="RunningTextStyle"
x:Name="RunningTextStyle"
内容即可