は、次のコードを考えてみましょう:コントロールの初期化順序フィアスコ
<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();
}
}
}
counter
はまだnull
いる間にスライダーが初期化時にそのValueChanged
イベントを発生させます。
これは、私がWPFを使用して実行してきたより大きな問題の例です。UIイベントはいつでも発生する可能性があり、初期化コードを置く場所が1つもないため、 WPFシステムが所有するすべてのポインタが初期化された後、UIイベントが発生する前に実行されます。
これに対処する最もエレガントな方法は何ですか?この特定の例ではデータバインディングを使用する必要があるという点は、この点にあります。