簡體   English   中英

自定義控件和generic.xaml中的其他樣式

[英]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.

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