我没有经验,特别是在MVVM,但试图使用ReactiveUI,我不理解我发现的示例ReactiveCommand的示例。我曾经使用过一次ICommand/DelegateCommand,但这是不同的,我没有得到它。有没有人知道ReactiveUI的ReactiveCommand的一个好例子?
我想要做的事情非常简单。点击视图中的按钮,并在视图模型中执行一个方法。我发现的所有例子都涉及IObservable <>,但我不明白,因为他们没有解释为什么总是适合我。我试图用这个作为一个学习经验,我最想做的事情就是将xaml中的按钮的Command属性绑定到一个命令(但是,它的作用,我不知道),这导致方法执行。没有集合,我只是传递一个int变量。
感谢您的帮助。对此,我真的非常感激。
编辑 - 下面出现使用保贝茨的建议代码:
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,-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();
}
这看起来是正确的 - 你能告诉我你的CodeBehind的构造函数的视图? – 2013-02-11 03:30:47
后面加了代码 – 2013-02-13 03:24:05