考慮下面的代碼:當counter
仍然null
控制初始化順序的悲劇
<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();
}
}
}
滑塊將提高其ValueChanged
事件期間初始化。
這是一個更大的問題的例子,我一直在使用WPF,UI事件可以在任何時候觸發,並且沒有一個地方可以放置我的初始化代碼,以保證它在所有WPF系統擁有的指針已經初始化之後,但在任何UI事件觸發之前運行。
什麼是最優雅的方式來處理這個問題?這個具體的例子應該使用數據綁定的事實就在這一點上。