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。这是大量代码;你能提供相关的代码并更具体一些吗?