gpt4 book ai didi

wpf - 动画和 2 向绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 19:51:40 26 4
gpt4 key购买 nike

我正在玩 WPF 动画并遇到了一个奇怪的问题。
我有一个 SliderTextBox . TextBox 使用 2-way 绑定(bind)绑定(bind)到 Slider.Value:

<StackPanel>
<Slider x:Name="MySlider" Minimum="0" Maximum="100" Value="50" />
<TextBox Text="{Binding ElementName=MySlider, Path=Value, Mode=TwoWay}" />
<Button Click="Button_Click">Test</Button>
</StackPanel>
当我拖动 slider 时,文本框中的文本会发生变化。当我更改文本框中的文本时, slider 的值会更新,它可以正常工作。
现在我添加一个动画,将 Slider.Value 属性设置为 0。我在按下按钮时启动它。
private void Button_Click(object sender, RoutedEventArgs e)
{
Storyboard storyboard = new Storyboard();
var animation = new DoubleAnimation();

animation.Duration = new Duration(TimeSpan.FromSeconds(0.5));
animation.To = 0;

Storyboard.SetTarget(animation, MySlider);
Storyboard.SetTargetProperty(animation, new PropertyPath(Slider.ValueProperty));

storyboard.Children.Add(animation);

storyboard.Begin();
}
当我按下按钮时,动画将 Slider 滚动到 0。 TextBox 也与 slider 同步更改为 0。
现在我面临这个问题。动画后,我无法更改 TextBox 中的文本。我更改文本,移动焦点,并且带有 slider 值的文本重置为 0。我仍然可以移动 slider ,并且 TextBox 使用 slider 值更新。但我无法使用 TextBox 设置 Slider 值。
我认为当动画停止时,值会以某种方式卡住在 animation.To 中指定的值上。属性(property),但我不知道如何解冻它。或者也许是别的东西?

最佳答案

这是因为依赖属性值优先级,这意味着动画设置的值比通过绑定(bind)设置的值具有更高的“优先级”。

这是 MSDN 关于如何解决此问题的引述:

One way to regain control of an animated property in code is to use the BeginAnimation method and specify null for the AnimationTimeline parameter. For more information and an example, see How to: Set a Property After Animating It with a Storyboard.

关于wpf - 动画和 2 向绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5396510/

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