[英]Custom control and additional style in generic.xaml for it
我已經為其創建了自定義控件和默認樣式。
我的XAML很簡單:
<Style TargetType="{x:Type local:MyControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border CornerRadius="10" BorderThickness="1" Background="Transparent" BorderBrush="Black"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我使用DefaultStyleKey連接到此樣式:
DefaultStyleKey = typeof(MyControl);
而且有效。 但是現在我想為控件創建其他樣式。 這是因為我的控件可以將某些模式定義為枚舉,例如:
public enum ControlMode
{
Mode1,
Mode2
}
現在,當我的控件處於Mode1時,我希望它具有其默認樣式。 但是當它處於Mode2時,我希望它具有另一種樣式,例如:
<Style TargetType="{x:Type local:MyControl}" x:Key"styleForMode2>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border BorderThickness="1" Background="White" BorderBrush="Black"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我該如何實現? DefaultStyleKey僅適用於類型名稱,因此我想到的唯一一件事就是為控件創建另一個類:MyControlWithMode2。 但我敢肯定,還有更合適的方法。 對?
(這是庫,不是應用程序,因此我無法使用應用程序的資源)
假設您的控件具有Mode
屬性,則默認的Style可以聲明Triggers來為不同的模式設置不同的ControlTemplates:
<Style TargetType="local:MyControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border CornerRadius="10" BorderThickness="1"
Background="Transparent" BorderBrush="Black"/>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="Mode" Value="Mode2">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border BorderThickness="1" Background="White"
BorderBrush="Black"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.