我一直在尝试按照 MVVM 开发模式在 WPF 中创建一个相当简单的应用程序,但我一直为做简单的事情看起来有多么困难而发疯。我已经在 Forms 中创建了这个应用程序并成功运行,但我的老板要求我在 WPF 中重写界面作为技术演示。我决定尝试尽可能多地遵循最佳实践,以使应用程序和代码尽可能具有教育意义。我目前的困境是每次选择更改时都使用列表框运行一些代码。我已准备好使用带有事件的代码隐藏来调用 View 模型上的方法。对我来说,这似乎仍然本质上是 MVVM,因为没有逻辑在执行。感谢您提供任何帮助/见解。
最佳答案
您可以简单地绑定(bind)列表框的 selecteditem 属性...在选择更改时将调用 View 模型中的 setter ,您可以做任何您想做的...
这是一个示例,可以帮助您
XAML
<Grid Canvas.Left="0" Canvas.Bottom="0" Height="300" Width="300" Background="Bisque">
<ListBox ItemsSource="{Binding Employes}" SelectedItem="{Binding SelectedEmploye}"/>
</Grid>
查看模型
public class ViewModel : ViewModelBase
{
private List<Employee> _employes;
public List<Employee> Employes
{
get { return _employes; }
set { _employees = value; OnPropertyChanged("Employes"); }
}
private Employee _selectedEmploye;
public Employee SelectedEmploye
{
get { return _selectedEmploye; }
set
{
_selectedEmployee = value;
OnPropertyChanged("SelectedEmploye");
}
}
}
查看模型库
public class ViewModelBase : INotifyPropertyChanged
{
protected virtual void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
员工类
public class Employee : ViewModelBase
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
}
关于c# - 有没有一种简单的方法可以将命令绑定(bind)到 MVVM WPF 中的列表框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6861617/