C# 以编程方式枚举和应用WPF样式
我有一个WPF按钮C# 以编程方式枚举和应用WPF样式,c#,wpf,xaml,storyboard,styling,C#,Wpf,Xaml,Storyboard,Styling,我有一个WPF按钮 <Button Name="HelloWorldButton" Width="100" Height="100" HorizontalAlignment="Center" VerticalAlignment="Center" Style="{StaticResource TileButton}"> Hello world </Button> 你好,世界 使用W
<Button Name="HelloWorldButton"
Width="100"
Height="100"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Style="{StaticResource TileButton}">
Hello world
</Button>
你好,世界
使用WPF样式,我应用了一个样式模板,如下所示
<Style x:Key="TileButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="focusRect"
Margin="-6"
BorderThickness="6">
<ContentPresenter />
<Border.BorderBrush>
<SolidColorBrush x:Name="focusRectBrush" Color="Transparent" />
</Border.BorderBrush>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="MouseOver">
<Storyboard>
<ColorAnimation Duration="0"
Storyboard.TargetName="focusRectBrush"
Storyboard.TargetProperty="Color"
To="Red" />
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed">
<Storyboard>
<ColorAnimation Duration="0"
Storyboard.TargetName="focusRectBrush"
Storyboard.TargetProperty="Color"
To="White" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
现在,我想以编程方式应用鼠标悬停VisualState
。我已经查看了HelloWorldButton.Style
属性,但看不到任何明显的实现方法
注意:显然,我理解,在不使用声明的XAML样式表的情况下,以编程方式直接向按钮添加边框是很简单的,但是在我的场景中,这不是一种可行的方法。我补充道:
<Button Name="HelloWorldButton"
Width="100"
Height="100"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Style="{StaticResource TileButton}" MouseEnter="HelloWorldButton_MouseEnter">
现在,当您将鼠标移到按钮上时,边框现在是绿色的。最终解决了这个问题
我正在寻找的代码非常简单
VisualStateManager.GoToState(HelloWorldButton, "MouseOver", true);
非常感谢您的意见,但我认为您可能完全没有理解我的要求。上面的示例仍然要求代码隐藏直接依赖(并引用)按钮的资源。如果我可以使用这种方法,我只会直接添加边界。
VisualStateManager.GoToState(HelloWorldButton, "MouseOver", true);