首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在不使用System.Windows.Input.ICommand的情况下在WPF中实现MVVM

在不使用 System.Windows.Input.ICommand 的情况下,在 WPF 中实现 MVVM 模式可以通过以下方式实现:

  1. 创建一个事件触发器(EventTrigger),并将其绑定到 View 层的 UI 元素上。
  2. 在 ViewModel 层中创建一个命令(Command),该命令将在事件触发器被触发时执行。
  3. 使用命令参数(CommandParameter)将 View 层的 UI 元素与 ViewModel 层的命令进行绑定。

以下是一个简单的示例:

首先,在 View 层的 XAML 文件中创建一个按钮,并为其添加一个事件触发器:

代码语言:xml<Button Content="Click me">
复制
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Click">
            <i:InvokeCommandAction Command="{Binding MyCommand}" CommandParameter="{Binding ElementName=MyButton}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Button>

其中,iSystem.Windows.Interactivity 命名空间的 XML 命名空间声明,需要在 XAML 文件的根元素中添加:

代码语言:xml
复制
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"

接下来,在 ViewModel 层中创建一个命令,并在其中实现业务逻辑:

代码语言:csharp
复制
public class MyViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private ICommand myCommand;

    public ICommand MyCommand
    {
        get
        {
            if (myCommand == null)
            {
                myCommand = new RelayCommand(param => this.ExecuteMyCommand(param));
            }

            return myCommand;
        }
    }

    private void ExecuteMyCommand(object parameter)
    {
        // 在此处实现业务逻辑
    }
}

最后,将 ViewModel 层的实例绑定到 View 层的 DataContext 中:

代码语言:csharp
复制
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = new MyViewModel();
    }
}

这样,当用户点击按钮时,就会触发 ViewModel 层中的命令,并执行相应的业务逻辑。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

共17个视频
动力节点-JDK动态代理(AOP)使用实现原理分析
动力节点Java培训
动态代理是使用jdk的反射机制,创建对象的能力, 创建的是代理类的对象。 而不用你创建类文件。不用写java文件。 动态:在程序执行时,调用jdk提供的方法才能创建代理类的对象。jdk动态代理,必须有接口,目标类必须实现接口, 没有接口时,需要使用cglib动态代理。 动态代理可以在不改变原来目标方法功能的前提下, 可以在代理中增强自己的功能代码。
领券