アドバイスをお願いします。
私が取り組んでいるアプリケーションには がありdocking control
、さまざまな「ドキュメント」の操作をサポートする必要があります。windows
したがって、同時に複数の (タブ) を開くことができます。
それぞれが異なるコンテンツをホストできます。私が参照した "ドキュメント" は、テキスト ファイル、Excel スタイル シート、またはこのアプリが開発されているメイン コントロール (地理データの視覚化) である可能性があります。
MVVM
パターンと MVVM Light ライブラリを使用しています。注: Excel スプレッドシート用のサード パーティ コントロールがあります。
これで、「保存」、「切り取り」、「コピー」などの共通の(in ) / ボタン (in )がある amenu bar
と aができました。タブを切り替えると、「保存」ボタンで適切な保存機能。toolbar
menuitems
menubar
toolbar
同じことがカット/コピー/ペーストにも当てはまります:
テキスト ドキュメントのタブにある場合 - 切り取り/コピー/貼り付けはテキストで動作する必要があります (これには wpf 組み込みコマンドがあります)。
メイン コントロールの場合 - グラフィック要素で動作するはずです (これらを実装する必要があります)。
スプレッドシートの場合 - 同封のスプレッドシート コントロール用のサード パーティ コマンドで動作するはずです。
さらに、いくつかのテキストが選択されているタブがある可能性があります。したがって、このタブに切り替えたときに切り取り/コピー用のメニュー項目/ボタンを有効にする必要がありますが、他のタブにはグラフィック要素が選択されていないため、切り取り/コピー用のメニュー項目/ボタンを有効にする必要があります。このタブに切り替えると無効になります。
保存command
を使用すると、それを行う 1 つの可能な方法を想像できますが、それでも、それを実装する良い方法であるかどうかはわかりませんRelayCommand
。
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new RelayCommand(() => this.SaveFile());
}
return _saveCommand;
}
}
メソッドは、タブSaveFile()
の他の「保存メソッド」を呼び出します(これは、「ドキュメント」タイプに応じたビューモデルになります)。datacontext
selected
ただし、保存ボタン/メニュー項目を有効/無効にする方法がわかりません。また、さまざまな切り取り/コピー/貼り付け機能を実現する方法もわかりません。
質問が長くなってしまい申し訳ありません。たぶん、私はちょうど尋ねたかもしれません:
「アプリケーションのどの部分が選択/アクティブになっているかに応じて、さまざまな切り取り/コピー/貼り付けコマンドをボタンにバインドするにはどうすればよいですか?」.
しかし、私が達成しようとしていることの追加のコンテキストが質問に答えるのに役立つと感じました.