[解決済み] コードの後ろからコマンドを呼び出す
2023-06-19 18:44:37
質問
いろいろと調べてみたのですが、正確な方法がわかりません。 私はMVVMを使用してユーザーコントロールを作成しており、「Loaded」イベントでコマンドを実行したいと思っています。 これは、コードの後ろに少し必要であることを理解していますが、何が必要なのかがよくわかりません。 コマンドはビューのデータコンテキストとして設定されているViewModelにありますが、ロードされたイベントの後ろのコードからそれを呼び出すことができるように、これをルーティングする方法がよく分かりません。 基本的に私が欲しいのはこのようなものです...
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
//Call command from viewmodel
}
周りを見渡しても、このための構文はどこにも見つからないようです。 コマンドを参照できるようにするには、まず xaml でコマンドをバインドする必要があるのでしょうか? ユーザー コントロール内のコマンド バインディング オプションは、ボタンのようなものの中でできるようにコマンドをバインドすることができないことに気づきました...
<UserControl.CommandBindings>
<CommandBinding Command="{Binding MyCommand}" /> <!-- Throws compile error -->
</UserControl.CommandBindings>
簡単な方法があると思うのですが、どうしてもわかりません。
どのように解決するのですか?
DataContextがすでに設定されている場合は、それをキャストしてコマンドを呼び出すことができます。
var viewModel = (MyViewModel)DataContext;
if (viewModel.MyCommand.CanExecute(null))
viewModel.MyCommand.Execute(null);
(必要に応じてパラメータを変更)
関連
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】名前 'ViewBag' が現在のコンテキストに存在しない - Visual Studio 2015
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] あるコンストラクタを別のコンストラクタから呼び出す
-
[解決済み] C#で同期メソッドから非同期メソッドを呼び出すには?
-
[解決済み] コンストラクタは非同期にできますか?
-
[解決済み】WPFコンボボックスのカスタムリストへのバインド
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み】「namespace」なのに「type」のように使われる。