1

CaliburnとMVVMパターンでWPFを使用していて、動的なコンテキストメニューを設定しようとしています。

現在、ViewModelのBindableCollectionにバインドされたアイテムを含むコンテキストメニューがあります。

<UserControl.ContextMenu>
         <ContextMenu ItemsSource="{Binding AvailableActions}"
                      actions:Action.TargetWithoutContext="{Binding}"
                      ItemContainerStyleSelector="{StaticResource NamedActionStyleSelector}"/>
</UserControl.ContextMenu>
public BindableCollection<NamedAction> AvailableActions { get; set; }

このBindableCollectionは、プログラムの実行中に特定の状況で次のメソッドによって更新されます(ビューモデルでも)。

private void UpdateAvailableActions()

現在のシステムはほとんどの状況でうまく機能しますが、右クリックイベントの後にリストを動的に生成する方が適切であることを示唆するいくつかのエッジケースがあります。

だから私の質問は、ユーザーが右クリックしたときにupdateメソッドを呼び出す(または呼び出される代替メソッドを書く)ための最良の方法を誰かが手伝ってくれるかどうかです。これを行う方法についての助けをいただければ幸いです。

ありがとう

4

1 に答える 1

1

OnPropertyChanged()個人的には、 fromを使うのが大好きですIPropertyNotifyChanged。このようにして、を呼び出す右クリックで実行されるコマンドを作成できますOnPropertyChanged()。MVVMを使用しているため、コマンドとしてイベントを実装する方法について少し調査する必要があります。開始点はここまたはここにあります。または、CommandParameterバインディングを使用してクリエイティブになり、コマンドで使用することもできます。

お役に立てば幸いです。

于 2011-08-05T02:52:47.947 に答える