Model-View-ViewModel(MVVM)是一种架构设计模式,用于实现用户界面,通过其表示逻辑(其ViewModel)将UI(View)与其数据(Model)分开。
将 CommunityToolkit.MVVM 与 Visual Studio 扩展一起使用时出现构建错误
尽管 SourceGenerator 显然工作正常,但我还是遇到了构建错误。示例代码: 命名空间 VisGit.ViewModels { 公共部分类 MainViewModel: ObservableObject { ...
如何从RecyclerViewAdapter调用ViewModel.delete?
我想从 Recyclerview 适配器调用 ViewModel.delete(房间数据库)方法,但它不起作用。有任何想法吗? 我想在 OnBindViewHolder 中调用 ViewModel,如下所示: 持有人.绑定。
我有一个相当简单的组件,如下所示: 示例文本 ... 我有一个相当简单的组件,如下所示: <form> <div class="form-group"> <label for="sampleText">Sample Text</label> <input type="text" class="form-control" id="sampleText" aria-describedby="sampleTextHelp" placeholder="Enter a text" @bind="@Value" /> <small id="sampleTextHelp" class="form-text text-muted">Enter a text to test the databinding</small> </div> </form> <p>You entered here: @Value</p> @code { [Parameter] public string Value { get; set; } } 我现在将其添加到这样的页面中: <MVVMTest Value="@_value" /> <p> You entered in MVVMTest: @_value </p> @functions { private string _value; } 当我在输入字段中输入文本时,它会在 您在此处输入: 正确更新,但不会传播到 *您在 MVVMTest 中输入”: 我需要做什么才能正确传播它? 我可以考虑将一个 Action<string> 作为第二个 [Parameter] ,当文本更改时我会在组件内触发它,但这似乎是一种黑客和迂回的方式。是必须这样做吗,还是有更好的方法? 后续1 Issac 的答案不起作用,因为它用 @bind-value:oninput="@((e) => ValueChanged.Invoke(e.Value))" 绊倒了 Cannot convert lambda expression to type 'object' because it is not a delegate type。 我不得不用这种迂回的方式来做: <form> <div class="form-group"> <label for="sampleText">Sample Text</label> <input type="text" class="form-control" id="sampleText" aria-describedby="sampleTextHelp" placeholder="Enter a text" @bind="@Value" /> <small id="sampleTextHelp" class="form-text text-muted">Enter a text to test the databinding</small> </div> </form> <p>You entered here: @Value</p> @code { private string _value; [Parameter] public string Value { get => _value; set { if(Equals(value, _value)) { return; } _value = value; OnValueChanged.InvokeAsync(value).GetAwaiter().GetResult(); } } [Parameter] public EventCallback<string> OnValueChanged { get; set; } } 并像这样使用它: @inject HttpClient http @page "/test" <div class="top-row px-4"> Test Page </div> <div class="content px-4"> <MVVMTest Value="@_value" OnValueChanged="@(v => _value = v)" /> <p> You entered in MVVMTest: @_value </p> </div> @functions { private string _value; } 不漂亮,但有效。我的“真实”组件更加复杂,因为更改的值会触发对底层 ASP.net Core 服务的调用,因此我必须仔细检测谁更改了内容以避免无限循环。 如果 Blazor 支持类似 XAML/WPF 的 MVVM,那肯定会更好...... 后续2 我回到 Issac 的解决方案,并通过额外的演员,我让它工作了: <form> <div class="form-group"> <label for="sampleText">Sample Text</label> <input type="text" class="form-control" id="sampleText" aria-describedby="sampleTextHelp" placeholder="Enter a text" value="@Value" oninput="@((Func<ChangeEventArgs, Task>)(async e => await OnValueChanged.InvokeAsync(e.Value as string)))" /> <small id="sampleTextHelp" class="form-text text-muted">Enter a text to test the databinding</small> </div> </form> <p>You entered here: @Value</p> @code { private string _value; [Parameter] public string Value { get; set; } [Parameter] public EventCallback<string> OnValueChanged { get; set; } } 用途: <MVVMTest Value="@_value" OnValueChanged="@(v => _value = v)" /> <p> You entered in MVVMTest: @_value </p> @functions { private string _value; } 这已经是 Blazor 中的一个已知问题。上周我已经被这个问题绊倒了,我也在 VS 开发者论坛发布了解决方法。 您需要添加一个 EventCallback 参数来执行此操作: @code { [Parameter] public string Value { get; set; } [Parameter] public EventCallback<string> ValueChanged { get; set; } } 阅读与组件参数绑定部分。
我一直在开发一个 3 级的基本贪吃蛇游戏。其中前两个工作完全正常,但第三个却造成了麻烦。尽管除了一项额外功能之外所有代码都是相同的...
即使没有显式的 DataContext,为什么我的 View 仍然成功绑定到我的 ViewModel
我正在 WinUI3 中编写 MVVM 应用程序,并且遇到了我不理解的行为。目前我的主视图托管一个 NavigationView 控件。该控件包含一个 Frame 控件,它是
java.lang.IllegalStateException:读取在拍摄快照后或尚未应用的快照中创建的状态
我正在使用 kotlin 和 jetpack compose 开发一个非常基本的贪吃蛇游戏。为了提高效率,我想到了使用协程,但我不断收到上述错误。 完整的项目正在...
我是 MVVMCross(以及一般的 MVVM)新手。在开始编码之前,我需要一些架构建议。 我正在移植几个遗留应用程序。它们共享大量的业务逻辑。我当时...
我正在尝试为 Android 构建一个基本的贪吃蛇游戏。除了食物更新之外,一切都运转良好。它是随机工作的,有时,当你从食物旁边经过时,它会变得
在 Flow 上从 .first() 切换到 .collect{} 会停止数据出现在屏幕上
我使用 Flow 和 Room 制作了一个视图模型,使用 .first() 将 UiState 上的变量与 Room 连接起来,正如代码实验室向我展示的那样。我注意到使用 .first() 不是一个好主意,因为当我
MVVM 中的 ICollectionView 和 CollectionViewSource
我正在学习 .NET 和 WPF,同时构建一个小型待办事项列表(如应用程序)。 我试图了解 ICollectionView 接口和 CollectionViewSource 如何与 MVVM 模式一起使用,...
我一直在关注如何使用 MVVM 制作第一个应用程序的教程,但我无法将 ViewModel 绑定到 MainWindow,然后从屏幕上获取数据。我得到 2 行空.. .
我有一个场景,我希望能够在 UI 中收集字符串数组...视图模型不应该关心如何收集字符串...并将该字符串数组传递给视图模型.. .
我有一个 WPF 窗口,其网格包含 4 个矩形。其中之一有一个用于显示页面的 ,在我的应用程序中使用。我想向窗口上的这些按钮添加命令...
当您选择房间时,RoomId 会传递到另一个窗口,该窗口根据 RoomId 显示任务。 我选择一个房间,转到另一个窗口,但没有显示任务 + 我尝试添加任务,...
将 ListBox 项目转换回其 Collection 类型
在我的 XAML 中,我有两个选项卡,第一个包含绑定到 ObservableCollection 对象的 ListBox,称为 ParameterFilesList,第二个包含绑定到 ObservableCollection 对象的 ListBox,称为
从 ViewModel 更改时,Datagrid 将不会更新
我有一个 DataGrid,其 ItemsSource 绑定到 DataTable。当我更新 DataTable 时,ViewModel 中的数据会更新,但 UI 不会更新。我已经在我的 Vie 中使用了 INotifyPropertyChanged...
我想知道如何在我的解决方案中实现干净的架构。我有项目:核心(模型、消息、ViewModels)、移动(毛伊岛项目 - >视图)、共享(Dto 项目)。我有: <
WPF DataGrid SelectedItem 绑定在项目更改后停止工作
我的问题/情况与 Wpf DataGrid SelectedItem 在单元格编辑后失去绑定非常相似,但我没有使用任何“自定义”WPF 框架。我有一个实现 INotifyPropertyChanged 和
我有一个用户需求:选择列表中的一个项目。单击一个按钮。对话模式窗口打开,显示该项目的详细信息(后面的窗口不会消失)。 因此,我试图找到简单的...
.net MAUI 将 BindingContext 转换回包含对象的原始数据
有没有办法将 BindingContext 属性转换回包含数据的原始对象? 我拥有的是自定义控件 ThingDisplay,其中 x:Name="thingDisplay" 和 x:DataType=&