mvvm – 有没有人知道ReactiveUI的ReactiveCommand的一个很好的
发布时间:2020-12-14 02:03:34 所属栏目:Windows 来源:网络整理
导读:我没经验,特别是在MVVM,但尝试使用ReactiveUI,我不理解我发现的演示ReactiveCommand的示例.我曾经使用过一次ICommand / DelegateCommand,但这是不同的,我没有得到它. 我想做的事情非常简单.单击视图中的按钮,然后在视图模型中执行该方法.我发现的所有例子都
我没经验,特别是在MVVM,但尝试使用ReactiveUI,我不理解我发现的演示ReactiveCommand的示例.我曾经使用过一次ICommand / DelegateCommand,但这是不同的,我没有得到它.
我想做的事情非常简单.单击视图中的按钮,然后在视图模型中执行该方法.我发现的所有例子都涉及IObservable<>,我不明白,因为他们没有解释那些适合我的总菜鸟. 基本上,我正在尝试将其用作学习体验,而我理想的做法是将xaml中按钮的Command属性绑定到命令(但是这有效,我不知道),这会导致一个方法执行.没有集合,我只是传递一个int变量. 谢谢您的帮助.对此,我真的非常感激. 编辑 – 使用Paul Betts的建议下面显示代码: C# public ReactiveCommand AddToDailyUsed { get; protected set; } public MainPageVM() { Initialize(); AddToDailyUsed = new ReactiveCommand(); AddToDailyUsed.Subscribe(AddToTodayUsedAction => this.AddToDailyUsedExecuted()); } private object AddToDailyUsedExecuted() { MessageBox.Show("AddToDailyUsedAction"); return null; } private void AddToDailyUsedAction(object obj) { MessageBox.Show("AddToDailyUsedAction"); } XAML <Button Content="{Binding Strings.add,Source={StaticResource LocalStrings}}" Command="{Binding AddToTodayUsed}" Margin="-5,-10,-10" Grid.Row="3" Grid.Column="2" /> 显然我错过了一些东西.我在AddToDailyUsedExecuted和AddToDailyUsedAction方法中插入了断点,但它们永远不会到达. 编辑构造函数以查看视图后面的代码: MainPageVM mainPageVM = new MainPageVM(); public MainPage() { InitializeComponent(); Speech.Initialize(); DataContext = mainPageVM; ApplicationBar = new ApplicationBar(); TaskRegistration.RegisterScheduledTask(); this.Loaded += new RoutedEventHandler(MainPage_Loaded); //Shows the rate reminder message,according to the settings of the RateReminder. (App.Current as App).rateReminder.Notify(); } 解决方法
因此,ReactiveCommand本身就是一个IObservable< object> – 在这种情况下,您可以将IObservable概念化为事件 – 当调用命令时(即按下按钮时)将触发此事件.所以,在你的构造函数中,你可能会写:
MyCommand = new ReactiveCommand(); MyCommand.Subscribe(param => this.MyCommandHasExecuted()); 但是,关于IObservable的常规事件不正确的是,你可以在它们上使用LINQ: // Now,MyCommandHasExecuted only gets run when the UserName isn't null MyCommand.Where(param => this.UserName != null) .Subscribe(param => this.MyCommandHasExecuted()); 更新:您的Xaml绑定到AddToTodayUsed但您的ViewModel命令称为AddToDailyUsed.可能是吗? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Windows Phone 7开发指南
- “系统管理大小”究竟对Windows页面文件意味着什么?
- windows-phone – Windows Phone 8上的FontAwesome
- 从Windows Server 2008 R2上的软件RAID 1引导
- 32位数据转8位数据和8位数据转32位数据
- 设置虚拟化Windows服务器以托管2-3个用户(运行QuickBooks)…
- windows – 在Visual Studio 2010 Express中创建“.rc”文件
- Qt:没有为Windows发布版本生成map / pdb文件
- .net – 如何使用断点调试Windows服务?
- 在Windows .NET平台下使用Memcached (Enyim使用)