C# 在运行应用程序之前,不会从属性信息更改设计视图

C# 在运行应用程序之前,不会从属性信息更改设计视图,c#,wpf,wpf-controls,C#,Wpf,Wpf Controls,当我直接从属性信息更改为依赖属性时,在运行应用程序之前,我的设计视图中不会立即显示结果 <local:OnOffToggleButton HorizontalAlignment="Left" Margin="35,34,0,0" x:Name="onOffToggleButton1" VerticalAlignment="Top" StateOf4="3" GotFocus="onOffToggleButton1_GotFocus" Loaded="onOffToggleButton

当我直接从属性信息更改为依赖属性时,在运行应用程序之前,我的设计视图中不会立即显示结果

   <local:OnOffToggleButton HorizontalAlignment="Left" Margin="35,34,0,0" x:Name="onOffToggleButton1" VerticalAlignment="Top" StateOf4="3" GotFocus="onOffToggleButton1_GotFocus" Loaded="onOffToggleButton1_Loaded" />


public class OnOffToggleButton : Control// ToggleButton
{

    public static readonly DependencyProperty StateOf4Property;

    static OnOffToggleButton()
    {

        OnOffToggleButton.StateOf4Property = DependencyProperty.Register("StateOf4", typeof(int), typeof(OnOffToggleButton));
    }

    public int StateOf4
    {
        get
        {
            return (int)this.GetValue(OnOffToggleButton.StateOf4Property);
        }
        set
        {
            SetValue(OnOffToggleButton.StateOf4Property, value);
        }          
    }
}

公共类OnOffToggleButton:Control//ToggleButton
{
4属性的公共静态只读从属属性状态;
静态OnOffToggleButton()
{
OnOffToggleButton.StateOf4Property=DependencyProperty.Register(“StateOf4”、typeof(int)、typeof(OnOffToggleButton));
}
公共int状态4
{
得到
{
返回(int)this.GetValue(OnOffToggleButton.StateOf4Property);
}
设置
{
设置值(OnOffToggleButton.Stateof4属性,值);
}          
}
}
}

这里是我的切换按钮的默认值、模板和样式

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication3">


<Style TargetType="{x:Type local:CustomControl1}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:CustomControl1}">
                <Border Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}">
                </Border>                   
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

<ControlTemplate x:Key="buttonTemplate" TargetType="{x:Type local:OnOffToggleButton}" >
    <StackPanel>
        <Grid>
            <Ellipse x:Name="btnEllipse" StrokeThickness="2"  Stroke="DarkBlue" Width="128" Height="131">
                <Ellipse.Fill>
                    <RadialGradientBrush Center="0.3,0.2" RadiusX="0.5" RadiusY="0.5">
                        <GradientStop Color="Azure" Offset="0.1" />
                        <GradientStop Color="Red" Offset="1.1" />
                    </RadialGradientBrush>

                </Ellipse.Fill>
            </Ellipse>
        </Grid>
    </StackPanel>
    <ControlTemplate.Triggers>
        <Trigger Property="StateOf4" Value="1">
            <Setter TargetName="btnEllipse" Property="Fill">
                <Setter.Value>
                    <RadialGradientBrush Center="0.3,0.2" RadiusX="0.5" RadiusY="0.5">
                        <GradientStop Color="Green" Offset="0.1" />
                        <GradientStop Color="GreenYellow" Offset="1.1" />
                    </RadialGradientBrush>
                </Setter.Value>
            </Setter>
        </Trigger>
        <Trigger Property="StateOf4" Value="2">
            <Setter TargetName="btnEllipse" Property="Fill">
                <Setter.Value>
                    <RadialGradientBrush Center="0.3,0.2" RadiusX="0.5" RadiusY="0.5">
                        <GradientStop Color="BlueViolet" Offset="0.1" />
                        <GradientStop Color="Pink" Offset="1.1" />
                    </RadialGradientBrush>
                </Setter.Value>
            </Setter>
        </Trigger>
        <Trigger Property="StateOf4" Value="3">
            <Setter TargetName="btnEllipse" Property="Fill">
                <Setter.Value>
                    <RadialGradientBrush Center="0.3,0.2" RadiusX="0.5" RadiusY="0.5">
                        <GradientStop Color="Maroon" Offset="0.1" />
                        <GradientStop Color="Pink" Offset="1.1" />
                    </RadialGradientBrush>
                </Setter.Value>
            </Setter>
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>
<Style TargetType="{x:Type local:OnOffToggleButton}">
    <Setter Property="Control.Template" Value="{StaticResource buttonTemplate}" />
</Style>


你能帮帮我吗!:)

我认为触发器在VS designer中不起作用


解决方法是使用VisualStateManager并将StateOf4值转换为不同的视觉状态。这也适用于designer。

这是大量代码;你能提供相关的代码并更具体一些吗?