gpt4 book ai didi

c# - 如何正确使用 VisualStateManager?

转载 作者:太空狗 更新时间:2023-10-30 01:04:30 27 4
gpt4 key购买 nike

我的更改属性代码不起作用,我完全不知道哪里出了问题,但也许你知道。

这是我的代码的一个简化示例,它重现了错误。这是我的 Xaml 代码:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Button x:Name="MyButton"
Height="100"
Width="300"
Content="Click"
FontSize="40"
FontWeight="Bold"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Background="Red" Click="MyButton_Click"/>
</Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="Blue">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="MyButton"
Storyboard.TargetProperty="Background">
<DiscreteObjectKeyFrame KeyTime="0" Value="Aqua"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>

这是代码隐藏:

public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}

private void MyButton_Click(object sender, RoutedEventArgs e)
{
VisualStateManager.GoToState(this, "Blue", true);
}
}

理论上,这应该在单击时将按钮颜色更改为“Aqua”,但没有任何反应。

最佳答案

将内容放在 ContentControl 中,并将 VisualState 应用于控件而不是 Page。

另外,不要使用 ObjectAnimation,而是使用 ColorAnimation 为 Button 的颜色设置动画。

<ContentControl x:Name="contentControl">
<ContentControl.Template>
<ControlTemplate>
<Grid
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Button x:Name="MyButton"
Height="100"
Width="300"
Content="Click"
FontSize="40"
FontWeight="Bold"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Background="Red" Click="Button_Click"/>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CustomGroups">
<VisualState x:Name="Blue">
<Storyboard>
<ColorAnimation Storyboard.TargetName="MyButton"
Storyboard.TargetProperty="Background.Color"
To="Aqua"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
</ControlTemplate>
</ContentControl.Template>
</ContentControl>

在后面的代码中,传递内容控制而不是页面:

VisualStateManager.GoToState(contentControl, "Blue", true);

关于c# - 如何正确使用 VisualStateManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22990695/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com