WPF绑定顺序-如何更改?

WPF绑定顺序-如何更改?,wpf,wpf-controls,binding,prism,Wpf,Wpf Controls,Binding,Prism,我有一个切换按钮,我将其“Tag”属性绑定到一个对象。然后,我将'IsChecked'属性绑定到它的'Tag'属性。 我的问题是,当窗口加载时,首先调用“IsChecked”,然后调用“Tag”。 如何首先绑定“Tag”属性 <ToggleButton> <ToggleButton.Tag> <Bind An Object...> </ToggleButton.Tag> <ToggleButton.

我有一个切换按钮,我将其“Tag”属性绑定到一个对象。然后,我将'IsChecked'属性绑定到它的'Tag'属性。 我的问题是,当窗口加载时,首先调用“IsChecked”,然后调用“Tag”。 如何首先绑定“Tag”属性

<ToggleButton>

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

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

</ToggleButton>

您可以将绑定到标记的源代码直接绑定到标记并进行检查,这样您就不需要依赖于标记的IsChecked绑定,您也不关心竞争条件,也不需要任何顺序。

您可以将绑定到标记的源代码直接绑定到标记并进行检查,那么,您就不需要依赖于标记的IsChecked绑定,也不关心竞争条件,也不需要任何订单。

为什么订单很重要?这是因为转换器不处理值为null的情况,因为它应该处理,即使它返回Binding.DoNothing。当标记设置为某个值时,IsChecked绑定应该刷新,转换器应该再次运行。不是吗?

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

你说得对。根据你的回答,我重新检查了我的装订,发现了一个错误。在修复之后,当“标记”绑定更改时,确实会再次调用IsChecked绑定转换器。您是对的。根据你的回答,我重新检查了我的装订,发现了一个错误。在修复之后,当“标记”绑定更改时,确实会再次调用IsChecked绑定转换器。谢谢。但肯特的回答解决了我的问题。我还认为这里没有竞争条件,因为所有属性都是依赖道具。谢谢。但肯特的回答解决了我的问题。我还认为这里没有竞争条件,因为所有属性都是依赖性道具。