c# - 有没有一种简单的方法可以将命令绑定(bind)到 MVVM WPF 中的列表框?

标签 c# wpf mvvm

我一直在尝试按照 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/

相关文章:

c# - 为什么任务在执行下一个代码之前等待Task.Run而不是Task.Factory.StartNew?

wpf - MVVM-如何以编程方式为我的 View 模型选择 View ?

c# - 如何生成大于 bigint 大小的连续数字列表?

c# - 数组中数字的排列

c# - 是否可以通过序列化将属性应用于对象?

c# - 为什么从 C# 程序调用 C 函数不需要不安全上下文?

c# - 如何从 ComboBox 控件获取 ToggleButton

c# - 在自定义 InkCanvas 中绘制 Stroke 和 DrawingVisual

c# - 如何在 MVVM 应用程序中执行 subview 模型中声明的命令?

silverlight - 在 Silverlight 和 MVVM 中动态添加 View