如何在不触发选择事件的情况下初始化WPF内容?

如何在不触发选择事件的情况下初始化WPF内容?,wpf,events,combobox,Wpf,Events,Combobox,我试图做的事情似乎很简单,但由于某种原因,它感觉很笨拙,所以我认为我做错了什么 我只想做一些下拉列表,这些下拉列表会改变设置。它们在更改时被保存。 有一个下拉列表控制WPF窗口上显示的内容。当此下拉列表更改时,其他下拉列表中的设置将更改为新选择 我的问题是,当我在加载窗口时填写所有下拉列表的值时,它会触发所有下拉列表的事件选择Changed 因此,我希望有一个更好的解决方案,而不是在我的每个事件中进行空检查(这就是我现在所拥有的) 这些下拉列表永远不会没有值。它们也不是静态的。它们是在运行时从数

我试图做的事情似乎很简单,但由于某种原因,它感觉很笨拙,所以我认为我做错了什么

我只想做一些下拉列表,这些下拉列表会改变设置。它们在更改时被保存。 有一个下拉列表控制WPF窗口上显示的内容。当此下拉列表更改时,其他下拉列表中的设置将更改为新选择

我的问题是,当我在加载窗口时填写所有下拉列表的值时,它会触发所有下拉列表的事件选择Changed

因此,我希望有一个更好的解决方案,而不是在我的每个事件中进行空检查(这就是我现在所拥有的)

这些下拉列表永远不会没有值。它们也不是静态的。它们是在运行时从数据源计算的。即使是静态值也会触发事件。 一些下拉列表在控制所有其他下拉列表的所有值中具有固定值。这意味着它们是在启动期间的运行时计算的,永远不会更改

我不想在代码隐藏中绑定事件


停止使用一个下拉列表来控制其他人的选定项,而是让ViewModel(或您的绑定类)来控制它,怎么样

每个下拉列表都已经有了它的源代码,将绑定添加到所选的项(我认为默认情况下应该是双向模式)



然后,当ViewModel的SelectedConrolingItem属性更改时,更新/设置属性设置器中的其他选定项(SelectedProject等)

如何停止使用一个下拉列表来控制其他选定项,而是让ViewModel(或您的绑定类)来控制它

每个下拉列表都已经有了它的源代码,将绑定添加到所选的项(我认为默认情况下应该是双向模式)


然后,当ViewModel的SelectedConrolingItem属性更改时,在属性设置器中更新/设置其他选定项(SelectedProject等)

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(); 
}
<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}"/>