Wpf 在XAML中将ICommand附加到控件的方法

Wpf 在XAML中将ICommand附加到控件的方法,wpf,asp.net-mvc,xaml,icommand,command-pattern,Wpf,Asp.net Mvc,Xaml,Icommand,Command Pattern,我对XAML很陌生。为了在利用XAML的同时利用MVC架构和命令模式,我已经开始将静态ICommand绑定到按钮。我正在做一个相当大的项目,有100多个按钮。我的问题是:是否有不同的方法将命令绑定到按钮以避免静态对象。关于C#、WPF和XAML,静力学常用吗?我肯定有人已经在使用MVC、命令模式和XAML的项目中工作过,你的方法是什么 我本应该早点编辑这篇文章的,但是当我在项目中工作时,我意识到当我问这个问题时,我对c#、WPF和XAML知之甚少。显然,在WPF中,实例属性可以方便地将方法和数据

我对XAML很陌生。为了在利用XAML的同时利用MVC架构和命令模式,我已经开始将静态ICommand绑定到按钮。我正在做一个相当大的项目,有100多个按钮。我的问题是:是否有不同的方法将命令绑定到按钮以避免静态对象。关于C#、WPF和XAML,静力学常用吗?我肯定有人已经在使用MVC、命令模式和XAML的项目中工作过,你的方法是什么

我本应该早点编辑这篇文章的,但是当我在项目中工作时,我意识到当我问这个问题时,我对c#、WPF和XAML知之甚少。显然,在WPF中,实例属性可以方便地将方法和数据成员绑定到控件


就MVC/MVVM而言,我想在我还不知道它是什么之前,我就犹豫过是否将我的模型公开给VM。

我想你指的是适用于WPF的MVVM模式。即模型视图视图模型

  • Model=用于为正在操作的数据构建表单模型
  • 视图=表示(通常是主窗体和许多用户控件窗体)
  • ViewModel=演示者的代码容器(包含代码的类)
  • 通常,您的绑定将取代从基实现RelayCommand的ICommand方法。在实现MVVM模型之前,有很多东西需要学习,我建议阅读Josh Smith的文章并下载他的示例以开始学习:

    有一些特殊的规则和原则需要学习,这个例子将经历很多


    我还认为稍微了解一下WPF如何执行绑定是明智的。您可以使用绑定进行许多特殊设置,以帮助在不同事件和其他位置执行操作。我甚至不知道所有的绑定都是背诵的,但我知道学习得越多,最终在XAML编码中节省的时间就越多,因为您可以重用、事件触发、继承和使用绑定做许多事情,从而使您的应用程序比静态创建更强大


    我知道MVVM和XAML在WPF中最常用。但是,我有一个模型、一个控制器、一个视图和一组实现ICommand的命令类。我利用XAML创建按钮,将自定义命令类的静态对象绑定到这些按钮。我更关心的是将数百个静态对象(我的自定义命令)绑定到用XAML创建的控件的缺点。另外,我想知道是否还有人在使用XAML和MVC而不是XAML和MVVC。我试图利用XAML,而不是太依赖WPF默认使用的MVVC。我非常感谢您的回复。非常感谢。我已经建立了我的架构,我的程序运行得很好(看起来是这样)。我没有WPF和XAML本身的问题。然而,由于这是我的第一个WPF/XAML项目,我更关心如何使用它。简单地说,我之所以使用XAML,是因为它提供了简单而丰富的UI功能。可能没有理由担心超过一百个静态对象,但不知怎么的,这让我很困扰。@Big Daddy“WPF不使用MVVM或默认情况下”在设计模式下,一旦你点击一个按钮,它创建了代码,你不是在使用MVVM吗?“我也认为稍微了解一下WPF是如何执行绑定的是明智的。”我同意这一点,实际上我在谷歌上看到了您为“msdn WPF命令绑定”提供的链接“。然而,我看到的大多数示例都使用静态对象或静态变量。我可能错过了一些东西,但如果您能为我提供一个绑定示例的链接,而不使用静态对象或变量,我将不胜感激。当您在MVVM中进行绑定时,通常会发生这样的情况,并提供一个简单标签的示例:此属性在非静态类中设置,可以单向更新,一个方向到震源,或两个方向,以及许多其他选项。这样,如果我有一个父窗体,然后想在构造函数中继承一个值,我可以,但我可以更改它,并且我的视图和视图模型是分开的。绑定示例的第二个链接是这样的。关于绑定,需要了解的重要一点是,它可以而且通常是事件驱动的。我不太确定,但我认为,数据绑定和命令绑定的工作方式有点不同。我对命令绑定做了更多的阅读,发现即使是WPF提供的默认命令也是静态RoutedCommand对象。因此,我认为我的方向是正确的,但如果有人已经创建了一些自定义命令,并使用XAML绑定到控件(特别是按钮)上,那就太好了。感谢您的回复。您可以使用类似的过程进行ICommand绑定。您只需告诉执行方法使用ICommand返回。这和你说的第一个例子很相似?从第一个链接还是第二个链接?