考虑以下代码:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<Slider ValueChanged="slider_ValueChanged/>
<TextBox x:Name="counter"/>
</StackPanel>
</Window>
和
namespace Project1
{
public partial class Window1 : Window
{
public MainWindow() { InitializeComponent(); }
void slider_ValueChanged(object sender,
RoutedPropertyChangedEventArgs<double> e)
{
counter.Text = e.NewValue.ToString();
}
}
}
Slider 将在初始化期间引发其ValueChanged
事件,而is still 。counter
null
这是我在使用 WPF 时遇到的一个更大问题的示例,UI 事件可以随时触发,并且没有一个地方可以放置我的初始化代码,以保证它在所有WPF 系统拥有的指针已被初始化,但在任何 UI 事件触发之前。
处理这个问题的最优雅的方法是什么?这个特定示例应该使用数据绑定这一事实是无关紧要的。