我正在尝试根据我在WPF中创建的ComboBox中的选择启动操作。我是WPF和C#的新手。我的ComboBox有
<ComboBox x:Name="SampleComboBox" Width="100" ItemsSource="{Binding Path=NameList}" />
其中NameList是后面代码中的List属性。现在我想根据ComboBox中的选择生成一个动作,但不确定从哪里开始。感谢。
答案 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语句中的选择执行操作,只要选择发生更改,就会调用该选项。