【问题标题】:WPF Binding Order - How To Change?WPF 绑定顺序 - 如何更改?
【发布时间】:2011-05-31 13:26:00
【问题描述】:

我有一个切换按钮,我将它的“标签”属性绑定到一个对象。然后我将“IsChecked”属性绑定到它的“Tag”属性。 我的问题是当窗口加载时首先调用'IsChecked',然后调用'Tag'。 我怎样才能让“标签”属性先绑定?

<ToggleButton>

    <ToggleButton.Tag>
        <Bind An Object...>
    </ToggleButton.Tag>

    <ToggleButton.IsChecked>
        <Binding Converter="{StaticResource SomeConverter}" Path="Tag" RelativeSource="{RelativeSource Self}"/>
    </ToggleButton.IsChecked>

</ToggleButton>

【问题讨论】:

    标签: wpf wpf-controls binding prism


    【解决方案1】:

    为什么顺序很重要?是不是因为您的转换器没有处理值为null 的情况,因为它应该 - 即使它返回Binding.DoNothing。当 Tag 设置为某个值时,您的 IsChecked 绑定应该刷新并且您的转换器应该再次运行。不是这样吗?

    【讨论】:

    • 你是对的。根据您的回答,我重新检查了绑定并发现了一个错误。修复后,确实在“标签”绑定更改时再次调用 IsChecked 绑定转换器。
    【解决方案2】:

    您可以将此源(绑定到Tag 的源)直接绑定到TagIsChecked,然后您就没有IsChecked 绑定依赖于Tag,并且您不关心竞争条件而且你不需要任何订单。

    【讨论】:

    • 谢谢。但是肯特的回答解决了我的问题。我也认为这里没有竞争条件,因为所有属性都是依赖道具。
    猜你喜欢
    • 2010-11-11
    • 1970-01-01
    • 2017-03-25
    • 2012-12-11
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多