私は特に 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,-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();
}