2012-04-03 16 views
2

私がやろうとしていることはとてもシンプルなようですが、なんらかの理由でそれは気難しいと感じるので、何か間違っていると思います。選択イベントのトリガーなしにWPFコンテンツを初期化するにはどうすればよいですか?

私がしたいのは、いくつかのドロップダウンがあり、これらのドロップダウンが設定を変更することだけです。彼らは変更されたときに保存されます。 WPFウィンドウに表示されるコンテンツを制御するドロップダウンがあります。このドロップダウンが変更されると、他のドロップダウン内の設定が新しい選択に変わります。

私の問題は、ウィンドウがロードされたときにすべてのドロップダウンの値を入力すると、すべてのドロップダウンに対してイベントの選択が変更されます。

私はすべてのイベント(これは私が現在行っていることです)にヌルチェックを入れるのではなく、より良い解決策を求めています。

これらのドロップダウンには値がありません。それらは静的でもありません。これらは、実行時にデータソースから計算されます。静的な値でもイベントを発生させるように見えます。 一部のドロップダウンは、他のすべてを制御するドロップダウン内のすべての値にわたって固定値を持ちます。これは起動時に実行時に計算され、決して変更されないことを意味します。

私はコード内のイベントをバインドする必要はありません。停止についての他の選択した項目を制御するために、1つのドロップダウンを使用して、その代わりに、ViewModelに(またはあなたのバインディングクラス)を持ってどのように

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    // This triggers the combobox selectionchanged 
    // The selection changed event sets the values of other dropdowns 
    // The event will not succeed because the values in those dropdowns 
    // are not populated 
    FillProjectList(); 
} 

答えて

0

はそれを制御します。その後

各ドロップダウンが既に選択したアイテムへの結合を追加します(デフォルトではそのべきモード双方向を、私は思う)、それは元のしている

<ComboBox ItemsSource="{Binding ViewModel.ProjectsList}" 
      SelectedItem="{Binding ViewModel.SelectedProject}"/> 

<ComboBox ItemsSource="{Binding ViewModel.SettingsList}" 
      SelectedItem="{Binding ViewModel.SelectedSettings}"/> 

<ComboBox ItemsSource="{Binding ViewModel.TheControlingList}" 
      SelectedItem="{Binding ViewModel.SelectedConrolingItem}"/> 

ときのViewModelのSelectedConrolingItemプロパティが変更、更新/設定プロパティセッターの他の選択項目(SelectedProjectなど)。

関連する問題