簡體   English   中英

如何創建不會自動應用的樣式?

[英]How can I create a style that is not automatically applied?

在這個答案中 ,如果您忽略了x:Name屬性,則會(正確地?似乎是..)聲稱該樣式會自動應用於所有地方。

如果未在每個樣式上指定標識符,則該樣式將應用於與您指定的TargetType匹配的所有控件。 如果您希望按鈕看起來不同,則可以執行與上述相同的操作,但還可以包括該樣式的標識符,該標識符將由每個不同的按鈕使用:[...]

但是,當我添加x:Name標識符時,應該自動應用它,還是應該這樣做?

因為當我嘗試這個:

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

在以這種方式鏈接到我的app.xaml ResourceDictionary中:

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

它仍然會自動應用於所有TextBlock

如何創建必須與其標識符一起顯示的樣式?

我在VS2015中使用Resharper,當我嘗試通過以下方式手動將樣式添加到TextBlock時, x:Key名稱甚至都沒有顯示: Style="{StaticResource ...}"定義(可能是這樣(我曾經有一次)可以,但通常是由R#或VS宣傳使用。

有趣的是,我只需要幾個小時就可以自動應用Button樣式。

給樣式賦予x:Key="MyArbitraryStyleKey"屬性。 它位於ResourceDictionary ,字典中某個事物的“名稱”(可以這么說)稱為Key,當您以這種方式查看它時,它實際上是有意義的。 從功能上來說,在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:Name="RunningTextStyle"插入的x:Key="RunningTextStyle" x:Name="RunningTextStyle"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM