Ema*_*iel 3 data-binding wpf mvvm
我有一个使用MVVM的WPF应用程序.我有一些用户控件,应该使用简单的数据绑定在3个Textbox控件中显示Person FirstName,LastName和email.
用户控件有一个简单的组合框,用户可以在其中选择用户的ID,因此应该加载具有该ID的人员记录(从数据库中获取其数据),然后在文本框中显示FirstName,LastName和Email.
我有一个Usercontrol,其中包含用于ID的组合框和用于三个属性的3个文本框,一个ViewModel类和一个具有三个属性(FirstName,LastName和Email)的Model类(person类).
使用MVVM(最好)实现此行为的最简单方法是什么?任何样品?
我在这里猜测,因为你的问题有点模糊,你不太确定如何把各个部分挂钩.为简单起见,我们将ViewModel直接挂钩到用户控件并将其全部绑定.
只要您的视图模型使用正确的人员集填充,下面的所有绑定都将处理数据并显示正确的数据.记下组合框中所选项目的双向绑定.这允许WPF将新选择的项目发送回viewmodel.
在UserControl的代码后面:
public MyUserControl()
{
DataContext = new MyViewModel();
}
Run Code Online (Sandbox Code Playgroud)
在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}" />
Run Code Online (Sandbox Code Playgroud)
你的ViewModel:
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; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12118 次 |
| 最近记录: |