gpt4 book ai didi

wpf - 在 MVVM 中为 WPF 实现一个简单的 Master-Detail 场景

转载 作者:行者123 更新时间:2023-12-01 11:09:53 26 4
gpt4 key购买 nike

我有一个使用 MVVM 的 WPF 应用程序。我有一些用户控件应该使用简单的数据绑定(bind)在 3 个文本框控件中显示人名、姓氏和电子邮件。

用户控件有一个简单的组合框,用户在其中为用户选择 ID,因此应加载具有该 ID 的人员记录(其数据从数据库中获取),然后 FirstName、LastName 和 Email 将显示在文本框中。

我有一个带有 ID 组合框的用户控件和三个属性的 3 个文本框,一个 ViewModel 类和一个具有三个属性(名字、姓氏和电子邮件)的模型类(人员类)。

使用 MVVM(最好)实现此行为的最简单方法是什么?有 sample 吗?

最佳答案

我在这里猜测,因为您的问题有点模糊,您不太确定如何将这些部分连接在一起。为简单起见,让我们将 ViewModel 直接连接到用户控件并对其进行绑定(bind)。

只要您的 View 模型填充了正确的人员集,下面的所有绑定(bind)都会处理数据并显示正确的数据。记下组合框中所选项目的双向绑定(bind)。这允许 WPF 将新选定的项目发送回 View 模型。

在 UserControl 后面的代码中:

public MyUserControl()
{
DataContext = new MyViewModel();
}

在 UserControl 的 XAML 中:
<ComboBox ItemsSource="{Binding AllPeople}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" />
<TextBox Text="{Binding SelectedItem.LastName}" />
<TextBox Text="{Binding SelectedItem.FirstName}" />
<TextBox Text="{Binding SelectedItem.EmailName}" />

您的 View 模型:
private IEnumerable<Person> _allPeople;
public IEnumerable<Person> AllPeople
{
get { return _allPeople; }
set
{
if (_allPeople != value)
{
_allPeople = value;
NotifyPropertyChanged("AllPeople");
}
}
}

private Person _selectedItem;
public Person SelectedItem
{
get { return _selectedItem; }
set
{
if (!_selectedItem != value)
{
_selectedItem = value;
NotifyPropertyChanged("SelectedItem");
}
}
}

private void NotifyPropertyChanged(string propertyName)
{
if ( PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName);
}
}
}

public class Person
{
public int PersonId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}

关于wpf - 在 MVVM 中为 WPF 实现一个简单的 Master-Detail 场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1183176/

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