WPF绑定顺序-如何更改?
我有一个切换按钮,我将其“Tag”属性绑定到一个对象。然后,我将'IsChecked'属性绑定到它的'Tag'属性。 我的问题是,当窗口加载时,首先调用“IsChecked”,然后调用“Tag”。 如何首先绑定“Tag”属性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.
<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绑定转换器。谢谢。但肯特的回答解决了我的问题。我还认为这里没有竞争条件,因为所有属性都是依赖道具。谢谢。但肯特的回答解决了我的问题。我还认为这里没有竞争条件,因为所有属性都是依赖性道具。