簡體   English   中英

DataGrid上下文菜單事件未觸發

[英]DataGrid Context Menu Event Not Firing

這就是我所擁有的:

<window>
<Window.Resources>        
    <DataTemplate DataType="{x:Type viewModel:LogsViewModel}" >
                            <DataGrid Name="MainLogDataGrid" ItemsSource="{Binding MainLogDataGrid}">

<DataGrid.ContextMenu>
<ContextMenu Name="MainGridContextMenu" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonUp" >
<i:InvokeCommandAction Command="{Binding OnMainDataGridContextMenuChange}" 
                 CommandParameter="{Binding ElementName=MainGridContextMenu, Path=PlacementTarget}" /> 
</i:EventTrigger>
</i:Interaction.Triggers>
<MenuItem Header="Insert Row" Name="InsertRowMenuItem" TabIndex="0" />
</ContextMenu>
</DataGrid.ContextMenu>
</DataGrid>

<DataTemplate DataType="{x:Type viewModel:ReportsViewModel}">
    <Label FontSize="50">THIS IS WHERE THE REPORTS GO</Label>
</DataTemplate>
</Window.Resources>
</Window>
<ContentControl  Content="{Binding CurrentPageViewModel}" />


    class LogsViewModel : ObservableObject, IViewModel
    {
        public RelayCommand<object> OnMainDataGridContextMenuChange { get; private set; }

        public LogsViewModel()
        {
            OnMainDataGridContextMenuChange = new RelayCommand<object>(MainGridContextMenuItemChange);

        }

        private void MainGridContextMenuItemChange(object menuItem)
        {
            var item = menuItem as MenuItem;
        }
}

問題在於,從未達到MainGridContextMenuItemChange方法。 這與上下文菜單看不到LogsViewModel DataContext有關嗎? 我該如何連接? 謝謝。

嘗試這個

 <ContextMenu Name="MainGridContextMenu"  DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Mode=Self}}">

ContextMenu不是LogicalTree的一部分,因此它不能從Parent繼承DataContext。但是ContextMenu確實具有Property PlacementTarget屬性,我們可以使用它通過綁定如上所示獲取DataGrid的DataContext。

設置ContextMenu的DataContext的第二個選項是

 <ContextMenu Name="MainGridContextMenu" DataContext="{Binding DataContext, Source={x:Reference MainLogDataGrid}}">

暫無
暫無

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

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