2017-05-01 8 views
0

私はこのクラスのユーザーが異なるコンテキストメニュー項目を公開する必要があるさまざまなユースケースのように、メニュー項目項目を定義できるようにしています。ユーザーがコンテキストメニュー項目を定義できるようにする

ソースXAML私はそれを使用したいのですがどのように

<Grid> 
    <DataGrid> 
     <DataGrid.Columns> 
      ... 
     </DataGrid.Columns> 
     <DataGrid.ContextMenu> 
      <ContextMenu 
       Visibility="{Binding SelectedItem, Converter={SomeConverter}}"> 
      </ContextMenu> 
     </DataGrid.ContextMenu> 
    </DataGrid> 
</Grid> 

私は、彼らができるように、コンテキストメニュー項目を公開するコントロールやビューモデルに追加する必要がありますどのような
<x:MyCollectionControl> 
    <MenuItems> 
     <MenuItem Header="Do Something" 
       Visibility="Collapsed" /> 
     <MenuItem Header="Do Something Else" 
       Visibility="{Binding SomeCondition}" /> 
    </MenuItems> 
</x:MyCollectionControl> 

私はどこでコントロールを使用して定義される?

答えて

0

もちろん、私はこれを投稿してから約5分後に修復を行いました。

私のコントロールコードに以下を追加しました。

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 
    public ItemCollection MenuItems => MyCollectionDataGrid.ContextMenu?.Items; 

これをコントロールの参照に使用しました。

<trade1:MyCollectionControl x:Name="SomeDataGrid"> 
    <trade1:MyCollectionControl.MenuItems> 
     <MenuItem Header="Do Something" 
       Visibility="Collapsed" /> 
     <MenuItem Header="Do Something Else" 
       Visibility="{Binding SomeCondition}" /> 
    </trade1:MyCollectionControl.MenuItems> 
</trade1:MyCollectionControl> 
1

ViewModelのコレクションプロパティにバインドされたContextMenuのItemsSourceを持つことができます。

あなたのすべてのViewModelが特定のインターフェイス(あなた自身のもの)から継承していると仮定すると、アイテムを持っているかしないか(ContextMenuを無効にするため)、このコレクションにゲッターを実装できます。

もっと具体的にする必要があります。

関連する問題