簡體   English   中英

WPF ContextMenu的綁定標題

[英]Bind Header of WPF ContextMenu

我在此處遇到TreeView-Binding和ContextMenu的問題: 選定的TreeViewItem為null

現在我遇到了這個問題:我有ContextMenu

<TreeView.ContextMenu>
    <ContextMenu x:Name="MyContext" ItemsSource="{Binding OCContext}" DisplayMemberPath="Text"/>
</TreeView.ContextMenu>

http://i.stack.imgur.com/4gA1l.png

(該圖顯示了我的ContextMenu的外觀,不要介意tabItem ...)。

如您所見,它只是ContetMenu,沒有MenuItem! 如果用戶單擊“關閉”,則我想在ViewModel中執行某些操作(引發命令?)。 我也想知道他點擊了哪個按鈕/菜單。 Menus的數量是動態的,因為它綁定了ItemsSource。

這是我的ViewModel:

private ObservableCollection<T_Antwort> _occontext;
public ObservableCollection<T_Antwort> OCContext
{
    get
    {
        if (_occontext == null)
            _occontext = new ObservableCollection<T_Antwort>();
        return _occontext;
    }
    set
    {
        _occontext = value;
        RaisePropertyChanged(() => OCContext);
    }
}

因此,我要做的就是將ContextMenu(“項目” Close和CloseOtherThankThis)綁定到我的ViewModel,因此,當用戶單擊其中一個時,我想在ViewModel中訪問它們。 這意味着我不想一個接一個地綁定它們,我想以某種方式讓一個事件(ContextMenuItemClicked(?))被調用並在ViewModel中使用它。

順便說一句。 使用ContextMenu下的MenuItem將創建另一個“菜單文件夾”,因此它將是

“”->關閉

“”->關閉其他謝謝

我不希望它看起來像這樣。

編輯:我目前正在得到這樣的項目:

    private void MyContext_PreviewMouseDown(object sender, MouseButtonEventArgs e)
    {
        System.Windows.Controls.Primitives.MenuBase s = sender as System.Windows.Controls.Primitives.MenuBase;
        ItemCollection ic = s.Items;
        T_Antwort SelectedItem = (T_Antwort)ic.CurrentItem;
    }

是否有可能使選定的項目具有約束力?

不知道您是否嘗試過,但是上下文菜單有一個PlacementTarget,它為您提供了包含上下文菜單的對象。

在一個項目中,我做了這樣的事情:

 <MenuItem ...    Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ContextMenu}},Path=PlacementTarget.SelectedItem

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM