草庐IT

c# - 在 View 模型中使用 ICommand 可以吗

大多数WPFmvvm应用程序,我们在View模型中使用ICommand。但它指的是System.Windows.Input。所以View模型现在与System.Windows.Input命名空间紧密结合。根据我的理解,View模型应该能够在普通的C#winform应用程序或asp.net应用程序中使用。通常我们使用以下代码行来执行RelayCommand实现的命令。privateRelayCommandtestCommand;//orprivateICommandtestCommand;publicICommandTestCommand{get{returntestCommand??(

c# - 是否有可能以 mvvm 模式在 wpf datagrid 上获取动态列?

我正在用wpf开发一个产品(使用MVVM模式)。根据用户的自定义(用户将选择列),我必须将一组数据显示到数据网格中。目前,我正在将具有一组属性的ObservableCollection绑定(bind)到数据网格的ItemSource。这将我限制为固定的列大小。注意:列出n个列名供用户选择。如果它在后面的代码中完成,则通过“datagrid.columns.add()”很容易。在这种情况下,任何人都可以帮助我吗。我的xaml:我的命令类:publicstaticclassDataGridExtension{publicstaticObservableCollectionGetColumn

c# - 为什么此 XAML 收到错误 : Items collection must be empty before using ItemsSource

任何人都可以从这段代码中联想到为什么ItemsSource行会得到一个ItemscollectionmustbeemptybeforeusingItemsSource.错误?我发现的大多数解决方案都指向错误组合的XAML,例如我似乎没有的额外元素等。当我拿出来的时候ItemsSource="{BindingCustomers}"它运行没有错误(但当然不会显示我的客户列表)。Customers在ViewModel中这样定义,其中有3个CustomerViewModels:Customer[]customers=Customer.GetCustomers();IEnumerablecust

c# - 在大型应用程序中使用 MVVM - 共享 View 模型、模型、状态等

我想知道你们中是否有人知道一些很好的教程来解释大型应用程序的MVVM。我发现关于MVVM的每个教程都只是基础知识解释(如何实现模型、View模型和View),但我对在应用程序页面之间传递数据、在哪里初始化View模型、在哪里存储常见应用程序的技术和模式感到好奇数据(在多个View模型之间共享)等。我更喜欢没有任何MVVM框架(MVVMLight等)的纯c#/XAML解决方案。 最佳答案 techniquesandpatternswhenitcomestopassingdatabetweenapplicationpages如果数据传递

c# - Prism,将 Views 和 ViewModels 与 Unity 连接起来,试图理解它

CreatingtheViewandViewModelUsingUnityUsingUnityasyourdependencyinjectioncontainerissimilartousingMEF,andbothproperty-basedandconstructor-basedinjectionaresupported.Theprincipaldifferenceisthatthetypesaretypicallynotimplicitlydiscoveredatruntime;instead,theyhavetoberegisteredwiththecontainer.Typi

c# - 在代码隐藏事件中调用 View 模型方法是否会破坏 MVVM?

我想知道这是否会破坏MVVM模式,如果会,为什么会如此糟糕?WPF:代码隐藏:privatevoidButton_Click(objectsender,RoutedEventArgse){ViewModel.CallMethod();}查看模型:publicvoidCallMethod(){//Somecode}恕我直言,它使后台代码非常简单,View模型仍然不知道View和后台代码,并且对View的更改不会影响业务逻辑。在我看来,它比Commands或CallMethodAction更简单明了。我不想要那种“这不是应该怎么做”的回答。我需要一个适当且合乎逻辑的理由来说明为什么这样做会

c# - 通用/类型安全的 ICommand 实现?

我最近开始使用WPF和MVVM框架,我想做的一件事是拥有类型安全的ICommand实现,这样我就不必强制转换所有命令参数。有谁知道这样做的方法吗? 最佳答案 不使用该语法,正如您可能发现的那样:errorCS0701:``System.Func`'isnotavalidconstraint.Aconstraintmustbeaninterface,anon-sealedclassoratypeparameter最好的办法是封装Func界面中的语义,例如:interfaceIFunctor{boolExecute(Evalue);}然

c# - 绑定(bind) List<string> 到 ComboBox

我希望从我的列表中获取我的组合框项目名称和值当然,我不希望我的View模型包含组合框项目列表。我得到了一个列表a,b,c,d我希望我的组合框有项目我的View模型得到了publicListPropsList{get;set;}我的观点得到了它给了我与PropsList组合:( 最佳答案 Nahum你将不得不使用ItemsSource="{BindingPropsList}",假设PropsList是你代码背后的一个依赖属性,或者更好的是,你的数据上下文中的一个属性实现了INotifyPropertyChanged。在您的情况下,您必

c# - WPF MVVM Light 单元测试 ViewModels

我不是MVVM模式的常客,这基本上是我第一次使用它。我过去所做的(“普通”WPF)是使用业务层和数据层(通常包含由服务或EntityFramework创建的实体)创建我的View。现在经过一番尝试后,我从MVVMLight创建了一个标准模板并执行了以下操作:定位器:publicclassViewModelLocator{staticViewModelLocator(){ServiceLocator.SetLocatorProvider(()=>SimpleIoc.Default);if(ViewModelBase.IsInDesignModeStatic){SimpleIoc.Defa

c# - 在 setter 中确定调用者——或静默设置属性

给定标准View模型实现,当属性更改时,是否有任何方法可以确定更改的发起者?换句话说,在下面的View模型中,我希望“PropertyChanged”事件的“sender”参数是调用Prop1setter的实际对象:publicclassViewModel:INotifyPropertyChanged{publicdoubleProp1{get{return_prop1;}set{if(_prop1==value)return;_prop1=value;//here,canIdeterminethesender?RaisePropertyChanged(propertyName:"Pr