【问题标题】:MVVM WPF C# Auto-properties ComboboxMVVM WPF C# 自动属性组合框
【发布时间】:2017-05-23 11:56:53
【问题描述】:

我想用 Propertychanged.Fody 重构我的代码,如本页所示http://www.mutzl.com/tag/mvvm-light/

普通代码:

private string _platformSelectedItem;
        public string PlatformSelectedItem
        {
            get { return _platformSelectedItem; }
            set
            {
                if (_platformSelectedItem == value) return;
                _platformSelectedItem = value;
                // Perform any pre-notification process here.
                GetData();
                RaisePropertyChanged();
            }
        }

public string PlatformSelectedItem {get; private set}

该属性绑定到一个组合框,并且组合框的值是基于另一个组合框的动态值,因此我有我的方法 GetData()。

<ComboBox ItemsSource="{Binding Platforms}" SelectedItem="{Binding PlatformSelectedItem, Mode=TwoWay}"  Grid.Column="1" Grid.Row="2" Height="20" Grid.ColumnSpan="2" Margin="0,3,15.667,3"/>

如果我将代码重构为自动属性,则必须通过单击/打开组合框来执行该方法。

我应该使用带有命令的事件触发器吗?我们的方法可能更简单吗?

【问题讨论】:

    标签: c# wpf mvvm combobox


    【解决方案1】:

    基于线程can we use <i:Interaction.Triggers> in WPF MVVM (not in Silverlight)

    我的最终解决方案如下:

    视图模型:

    属性区:

    public RelayCommand SelectionChangedCommand { get; private set; }
    

    构造函数:

    SelectionChangedCommand = new RelayCommand(Update);
    

    方法区:

       private void Update()
        {
            GetData();
        }
    

    然后在我的用户界面中:

      xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    
    <ComboBox ItemsSource="{Binding Platforms}" SelectedItem="{Binding PlatformSelectedItem, Mode=TwoWay}"  Grid.Column="1" Grid.Row="2" Height="20" Grid.ColumnSpan="2" Margin="0,3,15.667,3">
                            <i:Interaction.Triggers>
                                <i:EventTrigger EventName="SelectionChanged">
                                    <i:InvokeCommandAction Command="{Binding SelectionChangedCommand}"/>
                                </i:EventTrigger>
                            </i:Interaction.Triggers>
                        </ComboBox>
    

    【讨论】:

      猜你喜欢
      • 2021-09-16
      • 2015-04-27
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      • 2018-05-03
      相关资源
      最近更新 更多