Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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# 以编程方式枚举和应用WPF样式_C#_Wpf_Xaml_Storyboard_Styling - Fatal编程技术网

C# 以编程方式枚举和应用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

我有一个WPF按钮

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