mvvm 相关问题

Model-View-ViewModel(MVVM)是一种架构设计模式,用于实现用户界面,通过其表示逻辑(其ViewModel)将UI(View)与其数据(Model)分开。

如何从 swiftui 中的按钮修改 ViewModel 数据

看来我完全失去了MVVM数据流的概念: 我有一个简单的示例视图,显示 Doc 项目数组,由 ViewModel 类提供,该类必须是单例,可从多个

回答 1 投票 0

你好,我创建了 3 个 viewModel,想要将它们连接到单个视图(UI),但不能

我有 3 个 viewModel(AdminViewModel、StudentViewModel、ProfessorViewModel),我有一个 UI,用户可以在其中登录数据库,我创建了一个名为 ExtractRole 的方法,它扮演用户的角色...

回答 1 投票 0

Maui Mvvm 与 Observable Property Class Model 配合使用,如何在方法中正确调用类对象

对于 maui 和 mvvm 来说仍然很新,我正在尝试找出方法来访问可观察属性类中的元素。例如我有一个如下所示的登录类: 公共类登录模型 ...

回答 3 投票 0

从自定义 UserControl 的 DependencyProperty 返回值并使用 viewModel 的正确方法?

我将自定义用户控件包装到 dll,并希望引用它的其他人能够通过绑定到“Result”属性来获取或设置结果值。 这是 CustomControl.cs 代码: 公开部分

回答 1 投票 0

Maui MVVM - NotifyPropertyChangedFor 不使用复杂对象及其子属性

我正在尝试在 MAUI 8 项目中使用 CommunityToolkit.MVVM。我在使用 NotifyPropertyChangedFor 进行通知时遇到困难。 ViewModel 有一个布尔变量 CanSubmitForm,它只能获取

回答 1 投票 0

我无法多次导航到第二页

我正在使用外壳导航,我尝试通过菜单从主页导航到第二页。第一次使用没有问题,但是当我返回到第一个屏幕广告时,尝试转到...

回答 1 投票 0

MVVM - 当绑定属性不存在时隐藏控件

我想知道如果视图模型中不存在控件绑定的属性,是否可以隐藏视图上的控件。例如,如果我有以下内容: 我想知道如果视图模型中不存在控件绑定的属性,是否可以隐藏视图上的控件。例如,如果我有以下内容: <CheckBox Content="Quote" IsChecked="{Binding Path=IsQuoted}" /> 我可以在 XAML 中检测到视图模型上不存在 IsQuoted 属性,并简单地隐藏该实例中的控件吗? 我本质上是创建一个向导对话框,该对话框在视图模型集合中移动,显示每个视图模型的关联视图。对于集合中的某些视图模型,将存在“IsQuoted”属性,而对于某些视图模型则不存在。 我希望在这些视图之外有一个复选框,当当前视图模型具有该属性时显示,当视图模型不具有该属性时隐藏。所有视图模型都派生自一个公共基类,但我不想通过添加“ShowQuoted”属性等来弄乱基类。 想法?并且,预先感谢... 使用始终返回 Visibility.Visible 的转换器来处理该值存在的情况。通过指定回退值来处理该值不存在的情况。当该属性不存在时,绑定失败并接收后备值。 <Page.DataContext> <Samples:OptionalPropertyViewModel/> </Page.DataContext> <Grid> <Grid.Resources> <Samples:AlwaysVisibleConverter x:Key="AlwaysVisibleConverter" /> </Grid.Resources> <CheckBox Content="Is quoted" IsChecked="{Binding IsQuoted}" Visibility="{Binding IsQuoted, Converter={StaticResource AlwaysVisibleConverter}, FallbackValue=Collapsed}" /> </Grid> public class OptionalPropertyViewModel { public bool IsQuoted { get; set; } } public class AlwaysVisibleConverter : IValueConverter { #region Implementation of IValueConverter public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return Visibility.Visible; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } #endregion } 我修改了Phil的答案以使TargetNullValue起作用: public class AlwaysVisibleConverter : IValueConverter { public object? Convert(object? value, Type targetType, object parameter, CultureInfo culture) { if (value is null) { // Makes TargetNullValue work. // Apparently TargetNullValue doesn't look at the target directly, but through this converter. return null; } return Visibility.Visible; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } 并且: <CheckBox Content="Is quoted" IsChecked="{Binding IsQuoted}" Visibility="{Binding IsQuoted, Converter={StaticResource AlwaysVisibleConverter}, FallbackValue=Collapsed TargetNullValue=Collapsed}" />

回答 2 投票 0

取消任务后代码未执行

我们将异步命令的执行绑定到导致任务的 ui。另一个命令取消了此任务,但它无法正常工作。 公共类MainWindowViewModel:BaseViewModel {

回答 1 投票 0

LiveData Observer 在返回片段时仍在观察

所以我有这个代码,当我按下按钮时 btnLogin.setOnClickListener { val user = UserLogin(etUsername.text.toString(), etPassword.text.toString()) viewModel.login(用户) } 我会...

回答 2 投票 0

WINUI 3.0 - 缺少 WeakEventManager

我在WINUI3中找不到WeakEventManger类。 当我订阅比 ViewModel 寿命更长的模型事件时,我的所有 WPF 项目都在视图模型中使用此属性。 寿命较长的 ViewModel

回答 0 投票 0

RelayCommand(MVVM Toolkit)简单Demo讲解

您好,stackoverflow 社区, 我是 MVVM 主题的新手,但能够了解一些基础知识。我编写了一些教程并实现了我自己的 RealyCommand 和 ViewModelBase。 我有我的屁股...

回答 1 投票 0

在WPF中使用MVVM向画布添加n个矩形

我想向 mvvm 应用程序的主窗口添加一组矩形。在我的 viewModel 中,我有一个对象集合,我将其转换为 System.Windows.Shapes.Rectangle 类,并带有一个凸...

回答 2 投票 0

collectionview包含一个编辑器,如何通过编辑器中的更改来更改ViewModel中的文本#maui

当用户在编辑器中更改文本时,我需要将更改显示在 private MessageModel 消息模型,与添加新消息的按钮相同 当用户在编辑器中更改文本时,我需要将更改显示在 私有MessageModel消息模型,与添加新消息的按钮相同 <CollectionView ItemsSource="{Binding MessageModels.messege}" x:Name="collectionView"> <CollectionView.Header> <HorizontalStackLayout HorizontalOptions="Center" > <Label TextColor="Black" Text="Messages" VerticalOptions="Center"></Label> <Button MinimumWidthRequest="10" MinimumHeightRequest="10" Command="{Binding addNewmessageCommand}" Text="Add New message"></Button> </HorizontalStackLayout> </CollectionView.Header> <CollectionView.ItemTemplate> <DataTemplate> <HorizontalStackLayout Padding="2"> <Editor AutoSize="TextChanges" Text="{Binding . }" WidthRequest="300" FontSize="16" TextColor="#1565C0" /> <Button Background="Red" Command="{Binding Source={x:Reference collectionView}, Path=BindingContext.DeleteCommand}" CommandParameter="{Binding .}" Text="X" /> </HorizontalStackLayout> </DataTemplate> </CollectionView.ItemTemplate> </CollectionView> 我尝试使用 INotifyPropertyChanged,但也没有帮助 public partial class MessageModelEllementVM : CommunityToolkit.Mvvm.ComponentModel.ObservableObject { AddNewWayD addNewWayD; public event PropertyChangedEventHandler PropertyChanged; public MessageModelEllementVM( MessageModel messageModel, List<string> ways,int gridPosition, AddNewWayD addNewWay) { this.addNewWayD = addNewWay; this.messageModels = messageModel; GridPosition = gridPosition; photoURL = "фото не выбрали"; dialogimage = new Image(); messageModels.Plot_twist.ToList().ForEach(i => plot_twist += "," + i.ToString()); answers = AnswerTextConverter.Convert(messageModels.AnswerText, ways); } public MessageModelEllementVM() { this.messageModels = new MessageModel(); dialogimage = new Image(); } private int GridPosition; [ObservableProperty] public ObservableCollection<AnswerText> answers; [ObservableProperty] Image dialogimage; FileResult? uploadedFile; [ObservableProperty] string plot_twist; [ObservableProperty] private MessageModel messageModels; [ObservableProperty] string photoURL; [RelayCommand] public void AddWay() { //addNewWayD(GridPosition,messageModels); } [RelayCommand] async void AddImge() { uploadedFile = await MediaPicker.PickPhotoAsync(); if (uploadedFile != null) { dialogimage.Source= uploadedFile.FullPath; } } [RelayCommand] void addNewmessage() { messageModels.messege.Add(string.Empty); } [RelayCommand] private void Delete(string text) { foreach (var item in messageModels.messege) { if (item == text) { messageModels.messege.Remove(item); break; } } } } Code MessageModel 我也尝试在那里添加事件,但没有帮助 public class MessageModel{ public MessageModel() { Plot_twist = new List<int>(); messege = new ObservableCollection<string>(); AnswerText = new ObservableCollection<(string Answer, List<int> way)>(); } public List<MessageModel> messageModel = new List<MessageModel>(); public List<int> Plot_twist { get; set; } //номер диалога по типу ["0","1","1"] - глава 0 подветка 1 в подветке подветка 1 public ObservableCollection<string> messege { get; set; } //сообщения от Алисы (массив чтобы несколько подряд ) public string photoURL { get; set; } public ObservableCollection<(string Answer, List<int> way)> AnswerText; //way - адрес на продолжение }``` I need the data to change, but I'm still a beginner and I don't understand how to do it. can you please explain how it works and what ways it can be fixed 您的编辑器的 Text 属性绑定到纯字符串。数据绑定不会更改对象本身(在您的情况下是字符串),它们会更改对象的属性。这就是为什么您需要绑定到某种属性。 解决此问题的最简单方法是为您的消息实现一个带有字符串属性的包装类: public class Message { //note that binding to object's fields also doesn't work: //this works public string Text { get; set; } //this - does not! //public string Text; public Message(string text) { Text = text; } } 并且像这样使用它 public ObservableCollection<Message> messege { get; set; } 在 MessageModelElementVM 中,并且 <Editor Text="{Binding Text }" ... /> 在 xaml 中 此外,无需在 foreach 命令中使用 Delete。离开 <Button CommandParameter="{Binding .}" ... /> 照原样并将命令更改为: [RelayCommand] private void Delete(Message msg) { messageModels.messege.Remove(msg); } 这将删除您在 CommandParameter 中传递的确切对象

回答 1 投票 0

WPF DataGrid 选定项

我有一个 DataGrid,用户可以通过在最后一行输入数据来添加项目。我还有一个按钮可以删除当前选定的项目。但是当最后一行(空,用于添加新项目)被选择时...

回答 3 投票 0

ViewModel 上的 QueryProperty 在 .NET MAUI 中分配给变量太晚了?

我正在从主页调用页面,并使用 QueryProperty 传递字符串。我想评估这个字符串并根据传递的字符串创建不同的对象列表,所以...

回答 1 投票 0

如何在swift clean架构中使用视图和数据框架

我正在使用 Swift 和 SwifUI 开发一个应用程序,其中仅一种风格需要 GoogleCast 框架。 想象一下我实例化 GoogleCastButton 的视图: 导入 SwiftUI 导入 GoogleCast 圣...

回答 1 投票 0

如何将 UITextFieldDelegate 移动到 ViewModel

扩展 ViewModel: TextFieldDelegate { func textFieldShouldReturn(_ textField: UITextField) -> Bool { 搜索() textField.resignFirstResponder() 返回真 } }

回答 1 投票 0

有关 WPF LiveCharts HeatSeries 的一些格式问题

我使用 LiveCharts 的 HeatSeries 控件在我的 WPF 应用程序中创建气候图表(使用 MVVM / Caliburn.Micro)。该图表填充在我的 ViewModel 中,它按预期工作,但我...

回答 1 投票 0

MVVM 导航 | View 内的按钮

堆栈溢出社区您好, 我是 MVVM 的新手,并且已经编写了一些教程来了解一些基础知识(绑定、RelayCommand 等)。 到目前为止,单个窗口应用程序可以工作...

回答 1 投票 0

将 EventToCommandBehavior 与手势识别器结合使用

我有一个标签,用于通过点击导航到我的应用程序中的另一个页面。使用 Taped 和 TapGestureRecognizer 效果很好,但是当尝试实现 MVVM 并移动逻辑时...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.