我在[{1}}中有方案,我们希望在选择特定值时更改Combobox
的当前SelectedItem
。
For Instance :我们的指定Combobox
的值为:Combobox
,CEO
,Manager
,Dev
..
选择QA
后,我们希望将其更改为CEO
值。
Manager
绑定到ViewModel中的属性。
答案 0 :(得分:0)
啊哈!我认为这是一个愚蠢的问题,可以毫不费力地回答:P。但是,它认为我的教训是,WPF不像我一直认为的那样工作。
<强> MainWindow.xaml 强>
<Grid>
<ComboBox Width="100" Height="50" ItemsSource="{Binding ComboList}" SelectedValue="{Binding Selected, Mode=TwoWay, IsAsync=True}"/>
</Grid>
<强> MainWindow.xaml.cs 强>
public MainWindow()
{
InitializeComponent();
ObservableCollection<string> lst = new ObservableCollection<string>();
lst.Add("CEO");
lst.Add("Tester");
lst.Add("president");
lst.Add("Developer");
lst.Add("Manager");
MainWindowViewModel vm = new MainWindowViewModel() { ComboList = lst, Selected = "Employee" };
this.DataContext = vm;
}
<强> MainWindowViewModel.cs 强>
public class MainWindowViewModel : INotifiPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
public ObservableCollection<string> ComboList { get; set; }
private string selected;
public string Selected
{
get { return selected; }
set
{
selected = value == "CEO" ? "Manager" : value;
OnPropertyChanged("Selected");
}
}
}
密钥是 IsAsync=True
,这就是诀窍。感谢他Martin Harris