【发布时间】:2013-12-27 19:55:34
【问题描述】:
按钮单击 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}" />
在触发保存按钮的命令之前,绑定工作正常。一旦触发按钮的保存命令,组合框selectionchange 命令就会中断
编辑: Items 是一个字符串列表,如下所示
"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);
}
}
}
【问题讨论】:
-
SelectionChangedCommand来自 Telerik 吗? -
仅凭此处提供的详细信息很难给出任何答案。你能解释一下“休息”是什么意思吗?你的意思是
SelectedItem不再更新了吗?SelectionChangedCommand不再执行?CanExecute不再返回 true?这可能是任何数量的事情,我认为我们无法通过提供的有限信息来判断。你能分享你的SaveCommand对SelectedItem做了什么吗? (不必是确切的计算代码,但它会改变SelectedItem的值吗?是否还与SelectChangedCommand或其CanExecute相关? -
@user2951819,好吧,我唯一能建议的就是在调试器中运行你的应用程序。监视(借助断点)是否调用了 SelectionChangedCommand CanExecute/Execute 方法以及它们在做什么。如果未调用它们,请在调试器输出窗口中查看有关失败绑定或触发器的一些信息。
-
@user2951819,在该属性的设置器上设置断点并调试它!
-
@user2951819,很高兴听到你解决了这个问题 :)
标签: c# .net wpf silverlight mvvm