WPF 控件绑定序列
WPF Control binding sequence
我正在编写自己的 WPF 控件。
在我的控件代码中,如何指示依赖属性绑定的 sequence/priority?
<listselector:ChListSelector
Grid.Row="3"
SelectableGridLabelText="My Label"
SelectedGridLabelText="My Other Label"
SelectableItems="{Binding Path=SelectableItems, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedItems="{Binding Path=SelectedItems, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectableGridColumns="{Binding Path=SelectableGridColumns, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedGridColumns="{Binding Path=SelectedGridColumns, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
/>
我需要确保两个 "GridColumns" 属性在两个 "items" 属性之前绑定(因为 GridColumns 属性定义了我控件上的几个网格如何显示项目)
您真的不想规定绑定到依赖项属性的顺序。而且我认为没有任何方法可以明确地做到这一点。
您应该检查依赖项属性的 PropertyChanged 回调中的其他 属性 值,然后根据它们的状态执行操作。
例如:设置项目属性后,检查以确保网格属性不为空(或使用标志设置),然后再更新控件的其余部分。如果它们为空,则不要执行任何操作。随后在设置网格属性时,您可以更新控件的其余部分。 (您还需要检查其中的项目是否为空。)
或者为了简化它,只为控件设置一个 Setup()
方法,在执行之前 null 检查所有必需的属性,并在每次设置 属性 时调用它。
我正在编写自己的 WPF 控件。
在我的控件代码中,如何指示依赖属性绑定的 sequence/priority?
<listselector:ChListSelector
Grid.Row="3"
SelectableGridLabelText="My Label"
SelectedGridLabelText="My Other Label"
SelectableItems="{Binding Path=SelectableItems, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedItems="{Binding Path=SelectedItems, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectableGridColumns="{Binding Path=SelectableGridColumns, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedGridColumns="{Binding Path=SelectedGridColumns, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
/>
我需要确保两个 "GridColumns" 属性在两个 "items" 属性之前绑定(因为 GridColumns 属性定义了我控件上的几个网格如何显示项目)
您真的不想规定绑定到依赖项属性的顺序。而且我认为没有任何方法可以明确地做到这一点。
您应该检查依赖项属性的 PropertyChanged 回调中的其他 属性 值,然后根据它们的状态执行操作。
例如:设置项目属性后,检查以确保网格属性不为空(或使用标志设置),然后再更新控件的其余部分。如果它们为空,则不要执行任何操作。随后在设置网格属性时,您可以更新控件的其余部分。 (您还需要检查其中的项目是否为空。)
或者为了简化它,只为控件设置一个 Setup()
方法,在执行之前 null 检查所有必需的属性,并在每次设置 属性 时调用它。