按钮单击wpf mvvm后,组合框绑定中断 . 我用交互触发器将组合框选择绑定到 ICommand
.
<ComboBox IsEditable="True" Text="Please Select" IsReadOnly="True" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding SelectionChangedCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
<Button Content="Save" Command="{Binding SaveCommand}" />
绑定工作正常,直到保存按钮的命令被触发 . 触发按钮的保存命令后,combobox selectionchange
命令会中断
编辑:项目是一个字符串列表,如下所示
"A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8",
"B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8",
"C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8",
"D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8"
所选项目显示在只读文本框中,当字母更改时, SelectionChangedCommand
绑定中断( SelectedItem
不再更新,但在单击保存时更新) .
请注意,Combobox的SelectedItem绑定到ViewModel的以下属性 .
private string _SelectedItem;
public string SelectedItem
{
get
{
return _SelectedItem;
}
set
{
if (_SelectedItem!= value)
{
_SelectedItem= value;
RaisePropertyChanged(() => SelectedItem);
}
}
}
1 回答
我想知道为什么要通过“SelectedItem”和InvokeCommandAction获取两者 . 在SeletedItem的设置器中,您可以执行您想要的操作,并在手中保留新选择 .