我沒有經驗,特別是在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