WPF:设置所有属性后,调用属性已更改回调

时间:2018-11-05 11:23:06

标签: wpf

我有一个自定义控件,其中有两个ItemSourcePropertyItemTemplateProperty定义的依赖项属性(这只是一个示例)。

创建控件后,我想一起处理初始属性集:

<MyControl ItemsSource="{Binding Items}" ItemTemplate="{StaticResource SomeTemplate}" />

这是为了避免为每个项目创建两次视图。假定创建控件后,假设首先调用PropertyChangedCallback中的ItemSourceProperty。此时ItemTemplate将为空。如果我此时创建视图,则视图将没有模板。为PropertyChangedCallback调用ItemTemplate时,我不得不使用模板重新创建视图。

在框架设置ItemSourcePropertyItemTemplateProperty的初始值之后,如何以调用初始化的方式实现它?

在用户仅设置属性之一的情况下,仍然需要工作

<MyControl ItemsSource="{Binding Items}"

1 个答案:

答案 0 :(得分:0)

属性被一个接一个地设置,这意味着您的回调将被一个接一个地调用。您可以做的是检查另一个属性是否已在第一个属性的PropertyChangedCallback中初始化,反之亦然。如果没有,您可以简单地返回并什么也不做。

或者您可以处理控件的Loaded事件,并在事件处理程序中检查这两个属性的状态。

但是,您无法阻止在设置另一个属性B之前调用属性PropertyChangedCallback。您不知道何时以及是否会设置此属性。因此,您需要自己在回调或其他地方实现这种逻辑。