gpt4 book ai didi

wpf - 为什么 DataStateBehavior 最初不更新?

转载 作者:行者123 更新时间:2023-12-04 22:03:29 27 4
gpt4 key购买 nike

我已将 ListBox 绑定(bind)到我的 ViewModel,包括 ListBox.SelectedItem。我想根据是否选择了一个视觉状态来更改视觉状态,但以下内容最初不会更新状态,因此它保持错误状态:

<DataStateBehavior Binding="{Binding SelectedCamera}" Value="{x:Null}" TrueState="CameraSettingsUnselected" FalseState="CameraSettingsSelected"/>

为什么会这样,如何解决?

最佳答案

这里的问题似乎是绑定(bind)最初评估为 null,因此不会触发评估和状态更改所需的更改通知。

我已经用下面的子类修复了它:

public class FixedDataStateBehavior: DataStateBehavior
{
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.Loaded += (sender, routedEventArgs) =>
{
var bindingExpression = BindingOperations.GetBindingExpression(this, BindingProperty);
SetCurrentValue(BindingProperty,new object());
bindingExpression.UpdateTarget();
};
}
}

并像这样使用它:

<FixedDataStateBehavior Binding="{Binding SelectedCamera}" Value="{x:Null}" TrueState="CameraSettingsUnselected" FalseState="CameraSettingsSelected"/>

关于wpf - 为什么 DataStateBehavior 最初不更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17786249/

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