Model-View-ViewModel(MVVM)是一种架构设计模式,用于实现用户界面,通过其表示逻辑(其ViewModel)将UI(View)与其数据(Model)分开。
所以我之前的问题似乎无法回答,所以我将根据自己的建议尝试一下。 我正在寻找的功能是让数据网格改变前景(甚至
我正在 WPF 中创建一个基本的数据库应用程序,并且我已经开始使用 MVVM 模式。 我有一个对话框,要求用户从列表框中选择一个项目,然后单击“确定”。之后,我...
学习 WPF 和 MVVM - 从头开始学习的最佳方法[已关闭]
我有大约三年的 c# 经验。我想学习一些 WPF 和 MVVM 模式。 该网站上有很多文章的链接,但我有点不知所措。 明智的
我真的很难让文本框绑定到字符串变量,并且在互联网上尝试了各种解决方案,但没有成功。也许有人可以指出我做错了什么? 嗯...
“我目前正在开发一个 .NET MAUI 项目。假设用户可以使用同一个按钮开始和停止录制。我希望在录制时有连续的动画,并且当按钮...
WPF MVVM ComboBox SelectedItem 返回上一个项目
我有一个 MVVM 绑定的 ComboBox 我有一个 MVVM 绑定的 ComboBox <ComboBox x:Name="CBRootPathComboBox" ItemsSource="{Binding RootPathComboBoxItems, Mode=OneTime}" DisplayMemberPath="DisplayName" SelectedItem="{Binding SelectedRootPathComboBoxItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> <i:Interaction.Triggers> <i:EventTrigger EventName="SelectionChanged"> <i:InvokeCommandAction Command="{Binding RootPathComboBoxItemSelectionChangedCommand}" CommandParameter="{Binding ElementName=CBRootPathComboBox, Path=SelectedItem}" /> </i:EventTrigger> </i:Interaction.Triggers> </ComboBox> Interaction 来自 Microsoft.Xaml.Behaviors.Wpf nuget。 在 SelectionChanged 上,我期望看到 ICommand 以及列表中当前选定的项目。 在 ViewModel 中,我在代码中的某个位置设置了 SelectedItem。 我使用 ViewModel 属性在 ViewModel 中将其从“Item2”设置为“Item1”。 调用链如下: 1. set the property to "Item1" 2. Raise INotifyPropertyChanged.PropertyChanged event 3. .Net internals calls property getter, it returns "Item1" 4. ICommand call contains "Item2" in parameter. Expected: "Item1" ViewModel 属性: private RootPathItem _selectedRootPathComboBoxItem; public RootPathItem SelectedRootPathComboBoxItem { get { Debug.WriteLine($"getting {_selectedRootPathComboBoxItem?.DisplayName ?? "null"}"); return _selectedRootPathComboBoxItem; } set { Debug.WriteLine($"setting {value?.DisplayName ?? "null"}"); if (_selectedRootPathComboBoxItem != value) { Debug.WriteLine($"overwriting {_selectedRootPathComboBoxItem?.DisplayName ?? "null"}"); _selectedRootPathComboBoxItem = value; this.OnPropertyChanged(); } } } XAML:https://github.com/DJDoena/FolderSize/blob/bc0f316a321a5a1a752c4dd12484e2d8684b3700/View/MainWindow.xaml ViewModel:https://github.com/DJDoena/FolderSize/blob/bc0f316a321a5a1a752c4dd12484e2d8684b3700/ViewModel/MainViewModel.cs 几种解决方案。 无需使用事件。在虚拟机中实现所需的逻辑。对于您的代码来说,最简单的形式将是这样的: private RootPathItem _selectedRootPathComboBoxItem; public RootPathItem SelectedRootPathComboBoxItem { get { Debug.WriteLine($"getting {_selectedRootPathComboBoxItem?.DisplayName ?? "null"}"); return _selectedRootPathComboBoxItem; } set { Debug.WriteLine($"setting {value?.DisplayName ?? "null"}"); if (_selectedRootPathComboBoxItem != value) { Debug.WriteLine($"overwriting {_selectedRootPathComboBoxItem?.DisplayName ?? "null"}"); _selectedRootPathComboBoxItem = value; this.OnPropertyChanged(); RootPathComboBoxItemSelectionChangedExecute(value); } } } 从事件参数中检索新选定的元素: <ComboBox x:Name="CBRootPathComboBox" ItemsSource="{Binding RootPathComboBoxItems, Mode=OneTime}" DisplayMemberPath="DisplayName" SelectedItem="{Binding SelectedRootPathComboBoxItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> <i:Interaction.Triggers> <i:EventTrigger EventName="SelectionChanged"> <i:InvokeCommandAction Command="{Binding RootPathComboBoxItemSelectionChangedCommand}" EventArgsParameterPath="AddedItems[0]" /> </i:EventTrigger> </i:Interaction.Triggers> </ComboBox> 您可以使用 BeginInvoke 从事件异步调用命令,但为此您必须使用 i:Interaction.Behaviors 而不是 i:Interaction.Triggers。代码中稍微复杂一些的是 InvokeCommandAction 与 Behavior。
我有一个应用程序,它应该在启动时检查位置服务是否打开或关闭。我尝试使用 AlerDialog,并通过 Intent 将用户发送到设置,但它不起作用......
如何在 MVVM 中处理 ComboBox SelectionChanged?
对于那些使用纯 MVVM 的人来说,如何处理 ComboBox SelectionChanged 事件而不恢复到代码隐藏? 我尝试过例如不支持 AttachedBehaviors 但 Event="SelectedChanged": <
在 .NET MAUI (MVVM) 中从另一个 ViewModel 添加项目时如何确保 CollectionView 更新
我正在开发一个带有两个 CollectionView 的 .NET MAUI 应用程序: 公共 ObservableCollection CourseGroups { get; } = 新的 ObservableCollection(); 公开
我正在尝试在 DataGrid 列中的其他数据旁边显示图像。 我的模型看起来像这样: 公开课人物 { 公共字符串名称{获取;放; } 公共字符串地址{获取;放; ...
c# WPF MVVM Datagrid 按钮将 TextBlock 绑定到 DataContext
我在用户控件中有一个数据网格。 UserControl 连接到保存 DataGrid 数据的 ViewModel。在本例中,数据是联系人的数据。我想做“...
我正在尝试将两个布尔属性绑定到两个单选按钮。当表单加载时,两个单选按钮均处于未选中状态。当我单击第一个单选按钮时,它被选中。然而,当...
在 MVVM 中为什么人们要创建 ViewModel 文件夹?
...而不是使用 xxx.xaml.cs 生成的文件? 开发人员正在 Views 文件夹中的 xaml 中创建一个视图。 Visual Studio 在 xaml 文件下生成 xaml.cs 文件。但开发者更喜欢
======= 所以我决定将我的 ASP.NET 站点开发为 Silverlight。 我今天开始搜索有关我想在 Silverlight 应用程序中使用的 MVVM 模式的文章,我很困惑:/很难...
要么是我没有看到解决方案,要么是我在使用 MVVM 时发现了一个陷阱。 我有这个示例主细节: 类客户 { int CustomerID {获取;设置} 字符串名称 {get;set} ObservableCollect...
我正在阅读MVC、MVP、MVVM之间的区别 来源:这里 我的疑问是,图表(MVP)(MVVM)显示了Modle和Presenter、Model和ViewModel之间的双向箭头。 演示者和视图...
为什么我的 WPF 应用程序首次启动时显示 ViewModel 的类名而不是其内容(属性)?
我将 MainWindowViewModel 绑定到 MainWindow 的 DataContext。 然后我将此 MainWindowViewModel 初始化为特定的 itemsPageViewModel。 问题是在启动时我看到 itemsPageViewMode...
为什么我的源生成的属性在代码中无法访问?使用 mvvm 工具包
您好,您获得了以下 wpf 代码,该代码使用 mvvm 社区工具包版本 8 的源生成器: 公共部分类 CalculatorVM : ObservableObject { [ObservableProp...
使用 mvvm 和 jetpackcompose 在 android 中查看模型
我是 MVVM 新手,正在尝试创建一个应用程序。 该应用程序有 4 个不同的部分: 个人资料(登录 - 编辑个人资料等) 类别(显示猫和子猫) 项目(显示所有项目,单个项目页面,
帮助实施。我为窗口的大小编写了跟踪代码。然后我决定添加窗口位置的跟踪。我尝试实施它,但没有成功。 公开