【问题标题】:Combobox binding breaks after button click WPF MVVM按钮单击 WPF MVVM 后组合框绑定中断
【发布时间】: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?这可能是任何数量的事情,我认为我们无法通过提供的有限信息来判断。你能分享你的SaveCommandSelectedItem 做了什么吗? (不必是确切的计算代码,但它会改变SelectedItem 的值吗?是否还与SelectChangedCommand 或其CanExecute 相关?
  • @user2951819,好吧,我唯一能建议的就是在调试器中运行你的应用程序。监视(借助断点)是否调用了 SelectionChangedCommand CanExecute/Execute 方法以及它们在做什么。如果未调用它们,请在调试器输出窗口中查看有关失败绑定或触发器的一些信息。
  • @user2951819,在该属性的设置器上设置断点并调试它!
  • @user2951819,很高兴听到你解决了这个问题 :)

标签: c# .net wpf silverlight mvvm


【解决方案1】:

我想知道您为什么要同时获得通过“SelectedItem”和 InvokeCommandAction 的通知。在您的 SeletedItem 的设置器中,您可以做您想做的事情,并且您将新的选择握在手中。

【讨论】:

    猜你喜欢
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 2015-07-11
    • 2015-04-27
    • 2020-07-04
    • 1970-01-01
    • 2014-06-19
    相关资源
    最近更新 更多