如何确定WPF用户控件何时完成加载

时间:2011-07-25 18:53:48

标签: c# wpf .net-3.5

我有一个带有UIElement网格的WPF用户控件,其中有几个文本框和组合框。我有一个Button(btnApply),当表单加载完成后,其IsEnabled状态应为false。但是,TextChanged事件在填充网格时被触发,并将IsEnabled更改为true。我添加了一个布尔方法,在用户控件完成加载后确实保持btnApply.IsEnabled = false。但是,我无法分辨用户控件何时完全加载以改变我的方法的布尔状态以允许更改btnApply.IsEnabled。我在User Control上尝试了Loaded事件并尝试检查IsLoaded事件,并且在用户控件上的所有元素都已完成加载之前它们都被触发了。

编辑:用户控件的UIElement网格通过ItemsSource = List填充。通过TextChanged和SelectionChanged事件捕获文本框和组合框更改。

2 个答案:

答案 0 :(得分:5)

尝试使用Dispatcher在稍后的DispatcherPriority而不是Loaded上触发IsEnabled更改,例如Input。

Dispatcher.BeginInvoke(DispatcherPriority.Input,
    new Action(delegate() { btnApply.IsEnabled = false; } ));

您可以查看DispatcherPriority订单here

答案 1 :(得分:0)

也许我误解了这个问题,但在UserControl上注册Initialized / Loaded并没有办法解决问题?如果没有,你如何填充网格?

相关问题