Questions tagged «mvvm»

Model-View-ViewModel(MVVM)是用于实现用户界面的体系结构设计模式,该模式通过其表示逻辑(其ViewModel)将UI(视图)与其数据(模型)分离。

25
MVC和MVVM有什么区别?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6个月前关闭。 标准“模型视图控制器”模式和Microsoft的Model / View / ViewModel模式之间有区别吗?

14
ViewModel中的INotifyPropertyChanged与DependencyProperty
在Model-View-ViewModel体系结构WPF应用程序中实现ViewModel时,似乎有两个主要选择来使它可数据绑定。我已经看到DependencyProperty了将View绑定到的属性的实现,并且看到了ViewModel的实现INotifyPropertyChanged。 我的问题是,什么时候我应该优先选择另一个?有性能差异吗?将ViewModel依赖项提供给WPF真的是一个好主意吗?做出设计决策时,我还需要考虑什么?

30
如何绑定到MVVM中的PasswordBox
我遇到了绑定到P的问题asswordBox。似乎有安全隐患,但是我使用的是MVVM模式,因此我希望绕过这一点。我在这里找到了一些有趣的代码(有人使用过此代码还是类似的代码?) http://www.wpftutorial.net/PasswordBox.html 从技术上来说看起来不错,但是我不确定如何找回密码。 我基本上有LoginViewModelfor Username和的属性Password。Username很好,并且可以正常工作TextBox。 我按照上面的说明使用了上面的代码并输入了 <PasswordBox ff:PasswordHelper.Attach="True" ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/> 当我使用PasswordBoxas时TextBox,Binding Path=Password然后LoginViewModel更新了我的属性。 我的代码非常简单,基本上我有一个Commandfor Button。当我按下它时CanLogin被调用,如果返回true则调用Login。 您可以看到我Username在这里检查我的房产,效果很好。 在Login我一起发送到我的服务Username和Password,Username从包含数据我View却Password是Null|Empty private DelegateCommand loginCommand; public string Username { get; set; } public string Password { get; set; } public ICommand LoginCommand { get { if (loginCommand == null) { loginCommand = new DelegateCommand( Login, …
251 c#  wpf  mvvm  wpf-controls  passwords 

26
ViewModel应该如何关闭表单?
我正在尝试学习WPF和MVVM问题,但是遇到了麻烦。这个问题与这个问题相似(但不完全相同)。 我有一个使用MVVM模式编写的“登录”表单。 此表单具有一个ViewModel,其中包含用户名和密码,这些用户名和密码使用常规数据绑定绑定到XAML中的视图。它还具有一个“登录”命令,该命令绑定到表单上的“登录”按钮,使用常规数据绑定绑定。 当“ Login”命令触发时,它将调用ViewModel中的一个函数,该函数将关闭并通过网络发送数据以进行登录。完成此函数后,将执行2个操作: 登录名无效-我们只显示一个MessageBox,一切正常 登录名有效,我们需要关闭“登录名”表单,并让它返回true,因为它是DialogResult... 问题是,ViewModel对实际视图一无所知,那么如何关闭视图并告诉它返回特定的DialogResult?我可以在CodeBehind中粘贴一些代码,和/或将View传递给ViewModel,但这似乎将完全击败MVVM的整个方面。 更新资料 最后,我只是违反了MVVM模式的“纯度”,并让View发布了一个Closed事件,并公开了一个Close方法。然后,ViewModel将仅调用view.Close。该视图仅通过接口已知,并通过IOC容器连接,因此不会丢失可测试性或可维护性。 接受的答案是-5票,似乎很愚蠢!虽然我很清楚通过“纯粹”解决问题会带来的良好感觉,但我当然不是唯一认为200行事件,命令和行为只是为了避免使用一种方法的人。 “模式”和“纯度”的名称有点荒谬。
247 c#  wpf  mvvm 

22
MVVM:教程从头到尾?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我是一位具有5年以上经验的C#/ Windows Forms程序员。我一直在研究使用MVVM(模型-视图-视图模型)设计模式的WPF。我在互联网上搜索了教程。我什至都看过杰森·多林格(Jason Dolinger)很棒的视频。尽管我找到了很多,但我还没有找到能使我自始至终的人。我真正想要的是一个没有任何WPF知识的教程。 您最喜欢WPF-MVVM的哪些教程可以帮助您学习?
243 c#  .net  wpf  mvvm 

20
数据绑定到WPF Treeview中的SelectedItem
如何检索WPF树视图中选择的项目?我想在XAML中这样做,因为我想绑定它。 您可能会认为它不存在SelectedItem,但显然不存在,它是只读的,因此无法使用。 这就是我想做的: <TreeView ItemsSource="{Binding Path=Model.Clusters}" ItemTemplate="{StaticResource ClusterTemplate}" SelectedItem="{Binding Path=Model.SelectedCluster}" /> 我想将绑定SelectedItem到模型上的属性。 但这给了我错误: “ SelectedItem”属性是只读的,无法通过标记设置。 编辑: 好的,这就是我解决这个问题的方法: <TreeView ItemsSource="{Binding Path=Model.Clusters}" ItemTemplate="{StaticResource HoofdCLusterTemplate}" SelectedItemChanged="TreeView_OnSelectedItemChanged" /> 并在我的xaml的codebehindfile中: private void TreeView_OnSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) { Model.SelectedCluster = (Cluster)e.NewValue; }
241 c#  wpf  mvvm  treeview  selecteditem 

23
使用MVVM在WPF中处理对话框
在WPF的MVVM模式中,处理对话框是较复杂的操作之一。由于您的视图模型对视图一无所知,因此对话框通信可能会很有趣。我可以公开的是ICommand,当视图调用它时,会出现一个对话框。 有谁知道处理对话框结果的好方法?我说的是Windows对话框,例如MessageBox。 我们执行此操作的方法之一是在视图模型上有一个事件,当需要对话框时,视图将订阅该事件。 public event EventHandler<MyDeleteArgs> RequiresDeleteDialog; 可以,但是这意味着视图需要代码,而我想远离这些代码。

13
我应该使用哪种MVVM框架?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我正在使用MVVM模型开发应用程序,但是到了需要选择要使用的框架的地步。 可能的选项包括: MVVM工具包 MVVM基础 WPF应用程序框架(WAF) 轻型MVVM 卡利本 肚带 棱镜 反应式UI 以您的经验,哪个更好?
233 wpf  mvvm  frameworks 

5
Vue.js-v模型和v-bind之间的差异
我正在通过在线课程学习Vue,导师给了我一个练习,使输入文本具有默认值。我使用v-model完成了此操作,但是讲师选择了v-bind:value,但我不明白为什么。 有人可以给我简单的解释一下两者之间的区别,什么时候最好使用它们?

4
就编码C#而言,MVC,MVP和MVVM设计模式之间有何区别?
如果我们使用短语“ MVC,MVP和MVVM设计模式之间的区别是什么”来搜索Google,那么我们可能会获得很少的URL,这些URL会从理论上像MVC MVP和MVVM设计模式之间的区别进行讨论: 最有价值球员 在无法通过数据上下文进行绑定的情况下使用。Windows窗体就是一个很好的例子。为了将视图与模型分开,需要演示者。由于视图不能直接绑定到演示者,因此必须通过接口(IView)将信息传递给视图。 MVVM 在可以通过数据上下文进行绑定的情况下使用。为什么?删除了每个视图的各种IView接口,这意味着需要维护的代码更少。可能使用MVVM的一些示例包括使用Knockout的WPF和javascript项目。 MVC 在视图和程序其余部分之间的连接始终不可用(并且您无法有效地使用MVVM或MVP)的情况下使用。这清楚地描述了Web API与发送到客户端浏览器的数据分离的情况。微软的ASP.NET MVC是管理此类情况的绝佳工具,并提供了非常清晰的MVC框架 但是我还没有找到一篇文章在理论上与示例代码一起讨论差异。 如果我得到一篇讨论这三种设计模式(MVC,MVP和MVVM)与代码之间差异的文章,那将是非常不错的。 我想了解这3种设计模式(MVC,MVP和MVVM)实现的3个类似CRUD应用程序的源代码。这样我就可以遍历代码并了解如何为这三种设计模式(MVC,MVP和MVVM)编写代码。 因此,如果存在任何讨论这三种设计模式(MVC,MVP和MVVM)的代码外观不同的文章,那么请重定向至该文章。

5
KnockOutJS-单个视图中有多个ViewModel
我在想我的应用程序现在变得很大,太大了,无法使用单个ViewModel处理每个View。 所以我想知道创建多个ViewModels并将它们全部加载到一个View中会有多么困难。需要注意的是,我还需要能够将X ViewModel数据传递到Y ViewModel数据,以便各个ViewModel能够相互通信或至少彼此了解。 例如,我有一个<select>下拉列表,该select下拉列表具有selected状态,该状态使我可以将中的所选项目的ID传递<select>给单独的ViewModel ... 中的另一个Ajax调用。 在单个视图中处理大量ViewModel的任何观点都表示赞赏:)

7
从AngularJS中的指令添加指令
我正在尝试构建一个指令,该指令负责将更多指令添加到声明它的元素上。例如,我要建立一个指令,需要增加的照顾datepicker,datepicker-language和ng-required="true"。 如果我尝试添加这些属性然后使用,则$compile显然会生成一个无限循环,因此我正在检查是否已添加所需的属性: angular.module('app') .directive('superDirective', function ($compile, $injector) { return { restrict: 'A', replace: true, link: function compile(scope, element, attrs) { if (element.attr('datepicker')) { // check return; } element.attr('datepicker', 'someValue'); element.attr('datepicker-language', 'en'); // some more $compile(element)(scope); } }; }); 当然,如果我没有$compile该元素,则将设置属性,但不会引导该指令。 这种方法正确还是我做错了?有没有更好的方法来实现相同的行为? UDPATE:鉴于这$compile是实现此目标的唯一方法,是否有一种方法可以跳过第一个编译过程(该元素可能包含多个子级)?也许通过设置terminal:true? 更新2:我尝试将指令放入一个select元素,并且按预期方式,编译运行两次,这意味着预期options 的数量是原来的两倍。

4
将WPF ComboBox绑定到自定义列表
我有一个ComboBox,它似乎没有更新SelectedItem / SelectedValue。 ComboBox ItemsSource绑定到ViewModel类上的一个属性,该类将一堆RAS电话簿条目作为CollectionView列出。然后,我(在不同的时间)将ViewModel 的SelectedItem或绑定SelectedValue到了另一个属性。我已经在保存命令中添加了一个MessageBox来调试由数据绑定设置的值,但是未设置SelectedItem/ SelectedValue绑定。 ViewModel类看起来像这样: public ConnectionViewModel { private readonly CollectionView _phonebookEntries; private string _phonebookeEntry; public CollectionView PhonebookEntries { get { return _phonebookEntries; } } public string PhonebookEntry { get { return _phonebookEntry; } set { if (_phonebookEntry == value) return; _phonebookEntry = value; OnPropertyChanged("PhonebookEntry"); } } …
183 c#  wpf  data-binding  mvvm  combobox 

6
[Vue警告]:找不到元素
我正在使用Vuejs。这是我的标记: <body> <div id="main"> <div id="mainActivity" v-component="{{currentActivity}}" class="activity"></div> </div> </body> 这是我的代码: var main = new Vue({ el: '#main', data: { currentActivity: 'home' } }) ; 当我加载页面时,我得到以下警告: [Vue warn]: Cannot find element: #main 我究竟做错了什么?
166 javascript  mvvm  vue.js 

17
在MVVM中,ViewModel或Model应该实现INotifyPropertyChanged吗?
我研究过的大多数MVVM示例都具有Model实现 INotifyPropertyChanged,但是在Josh Smith的CommandSink示例中 ,ViewModel实现了INotifyPropertyChanged。 我仍然在认知上将MVVM概念放在一起,所以我不知道是否: 您必须将其放入INotifyPropertyChangedViewModel才能开始CommandSink工作 这只是规范的畸变,并不重要 您应该始终具有Model实现,INotifyPropertyChanged并且这只是一个错误,如果将其从代码示例开发到应用程序,则可以纠正该错误 在您从事的MVVM项目上,其他人有什么经验?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.