WPF では、RoutedUICommand
は依存オブジェクトではなく、そのプロパティを MenuItem のヘッダーなどの UI 内の何かにINotifyPropertyChanged
バインドする場合に意味を実装しません。動的に読み込まれたコンテキストでメモリ リークが発生する可能性があります。これらの UI がロードおよびアンロードされるときにアイテムが非常に頻繁に作成および破棄されるメニューまたは UI。Text
Mode
OneTime
逆に、 を使用するOneTime
と、リークを回避できますが、アプリケーションのステータスに従ってメニューのテキストを動的に更新する必要があるため、必要な変更通知が失われます。"Save 'xxx' As..."
(現在のアイテムの名前を反映するために、典型的なコマンドがどのように変化するかを考えてみてください。)
とはいえ、メモリ リークを発生させずにテキストに適切にバインドし、変更を取得するにはどうすればよいでしょうか。
私たちが提案する解決策は、独自のプロパティを作成し、それをサポートするために実装するRoutedCommand
(注: 'UI' なし) のサブクラスを作成することです。ただし、 ではないため、 のヘッダーをプロパティに自動的にバインドするなど、WPF の組み込みサポートに問題があるかどうかはわかりません。(注: 実際のオブジェクトを使用してから、プロパティを「新規作成」することもできますが、プロパティへのアクセス方法で問題が発生する可能性があるため、可能であれば回避したいと考えています。)Text
INotifyPropertyChanged
MenuItem
Text
RoutedUICommand
RoutedUICommand
Text