在WPF中选择ComboBox中的项目以执行操作

时间:2011-09-12 17:00:57

标签: c# wpf combobox

我正在尝试根据我在WPF中创建的ComboBox中的选择启动操作。我是WPF和C#的新手。我的ComboBox有

<ComboBox x:Name="SampleComboBox" Width="100" ItemsSource="{Binding Path=NameList}" />

其中NameList是后面代码中的List属性。现在我想根据ComboBox中的选择生成一个动作,但不确定从哪里开始。感谢。

3 个答案:

答案 0 :(得分:2)

您需要添加一个方法来处理SelectionChanged事件。您可以在代码中执行此操作:

this.MyComboBox.SelectionChanged += new SelectionChangedEventHandler(OnSelectionChanged);

或在XAML中:

<ComboBox x:Name="SampleComboBox" Width="100" 
ItemsSource="{Binding Path=NameList}" SelectionChanged="OnSelectionChanged" />

然后您可以使用所选项目执行某些操作:

private void OnSelectionChanged(object sender, SelectionChangedEventArgs e) 
{
     ComboBoxItem cbi = (ComboBoxItem) (sender as ComboBox).SelectedItem;
}

答案 1 :(得分:0)

您可以通过撰写SampleComboBox.SelectedItem来获取所选对象 这将返回源列表中项目的实例。

答案 2 :(得分:0)

这个NameList中的值是一组有限的值,是这个的ItemsSource吗?

为什么不修改xaml来阅读:

<ComboBox x:Name="SampleComboBox" Width="100" SelectedItem="{Binding TheItem}" ItemsSource="{Binding Path=NameList}" />

然后在你的ViewModel中,有类似的东西:

public static readonly DependencyProperty TheItemProperty=
    DependencyProperty.Register("TheItem", typeof(string), typeof(OrderEditorViewModel), 
        new PropertyMetadata((s, e) => {
            switch (e.NewValue) {
                case "SomeValue":
                    // Do something
                    break;
                case "SomeOtherValue":
                    // Do another thing
                    break;
                default:
                    // Some default action
                    break;
             }
     }));

public string TheItem{

  get { return (string)GetValue(TheItemProperty); }
  set { SetValue(TheItemProperty, value); }
}

您可以根据switch语句中的选择执行操作,只要选择发生更改,就会调用该选项。