Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自定义控件及其在generic.xaml中的附加样式_C#_Wpf_Xaml - Fatal编程技术网

C# 自定义控件及其在generic.xaml中的附加样式

C# 自定义控件及其在generic.xaml中的附加样式,c#,wpf,xaml,C#,Wpf,Xaml,我已经为它创建了自定义控件和默认样式 我的XAML很简单: <Style TargetType="{x:Type local:MyControl}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate> <Border CornerRadius="10" BorderThickness="1"

我已经为它创建了自定义控件和默认样式

我的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>
它是有效的。但现在我想为我的控件创建其他样式。这是因为我的控件可以将某些模式定义为枚举,例如:

public enum ControlMode
{
    Mode1,
    Mode2
}
现在,当我的控件处于模式1时,我希望它具有默认样式。但当它处于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>

假设控件具有
模式
属性,默认样式可以声明触发器以为不同模式设置不同的控件模板:

<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>

假设控件具有
模式
属性,默认样式可以声明触发器以为不同模式设置不同的控件模板:

<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>