Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Data binding 绑定组合框选择更改为命令MVVM_Data Binding_Mvvm_Combobox_Command - Fatal编程技术网

Data binding 绑定组合框选择更改为命令MVVM

Data binding 绑定组合框选择更改为命令MVVM,data-binding,mvvm,combobox,command,Data Binding,Mvvm,Combobox,Command,情况: 1组合框(A)绑定到具有模型实体类型的ObservableCollection属性的VM 1其他组合框(B)也如刚才所述绑定到另一个模型实体类型 我的VM有一个命令(Josh Smith编写的RelayCommand),它将填充绑定到的属性组合框(B) 问题: Combobox没有要绑定的命令 我不应该打破MVVM的方式 …您可以添加附加到组合框的自定义行为,并订阅已更改的选择 使用System.Windows.Input; 使用Windows.UI.Xaml; 使用Windows

情况:

  • 1组合框(A)绑定到具有模型实体类型的ObservableCollection属性的VM
  • 1其他组合框(B)也如刚才所述绑定到另一个模型实体类型
  • 我的VM有一个命令(Josh Smith编写的RelayCommand),它将填充绑定到的属性组合框(B)
问题:

  • Combobox没有要绑定的命令
  • 我不应该打破MVVM的方式

  • …您可以添加附加到组合框的自定义行为,并订阅已更改的选择

    使用System.Windows.Input;
    使用Windows.UI.Xaml;
    使用Windows.UI.Xaml.Controls;
    使用Microsoft.Xaml.Interactivity;
    命名空间StackOverflowWin81
    {
    公共类SelectionChangedCommand行为:DependencyObject,IBehavior
    {
    专用组合框_组合框;
    公共无效附加(DependencyObject associatedObject)
    {
    //设置附着对象
    _comboBox=关联对象作为comboBox;
    //订阅活动
    _comboBox.SelectionChanged+=\u comboBox\u SelectionChanged;
    }
    私有void\u组合框\u选择已更改(对象发送者,选择更改已更改)
    {
    //执行命令
    if(this.Command.CanExecute(null))
    {
    Command.Execute(null);
    }
    }
    公共图书馆
    {
    _comboBox.SelectionChanged-=\u comboBox\u SelectionChanged;
    }
    public DependencyObject AssociatedObject{get;private set;}
    公共静态只读DependencyProperty CommandProperty=DependencyProperty.Register(
    “命令”、类型化(ICommand)、类型化(SelectionChangedCommand行为)、新属性元数据(默认值(ICommand));
    公共ICommand命令
    {
    获取{return(ICommand)GetValue(CommandProperty);}
    set{SetValue(CommandProperty,value);}
    }
    }
    }