gpt4 book ai didi

c# - MVVM WPF C# 自动属性组合框

转载 作者:行者123 更新时间:2023-12-03 10:43:19 25 4
gpt4 key购买 nike

我想用 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}

该属性绑定(bind)到一个组合框,组合框的值是基于另一个组合框的动态值,因此我有我的方法 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"/>

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

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

最佳答案

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

我的最终解决方案如下:

View 模型:

属性区:

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>

关于c# - MVVM WPF C# 自动属性组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41544354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com