WPF DataGrid行上的ContextMenu - 事件不触发

4

我已经对这个主题进行了很多搜索…我必须说我对WPF相当新手。

这是我的问题: 我有一个数据网格,并需要在数据网格行上使用上下文菜单。

我有以下代码:

<Grid>  
   <TabControl>
      <TabItem>
         <Grid>
            <DataGrid Grid.Row="2" Grid.ColumnSpan="3" AutoGenerateColumns="False" HorizontalAlignment="Stretch" Margin="6,6,0,0" Name="gridErrors" 
                          VerticalAlignment="Stretch" AlternatingRowBackground="Gainsboro"  AlternationCount="2" SelectionChanged="gridErrors_SelectionChanged"
                          IsEnabled="False">
                  <DataGrid.Resources>
                        <ContextMenu x:Key="DataRowContextMenu">
                            <MenuItem Header="Detaillierte Fehlerbehandlung" />
                        </ContextMenu>
                    </DataGrid.Resources>

                    <DataGrid.RowStyle>
                        <Style TargetType="{x:Type DataGridRow}" x:Name="styleForDataRow">
                            <EventSetter Event="PreviewMouseLeftButtonDown" Handler="OnDataGridRow_PreviewMouseLeftButtonDown" />
                            <Setter Property="ContextMenu" Value="{StaticResource DataRowContextMenu}">
                                <!--<Setter.Value>
                                    <ContextMenu>
                                        <MenuItem Header="Detaillierte Fehlerbehandlung" />                                            
                                    </ContextMenu>
                                </Setter.Value>-->
                            </Setter>                               
                        </Style>
                    </DataGrid.RowStyle>

                    <DataGrid.Columns>
                        <DataGridTextColumn Binding="{Binding Number}" Header="Input Nummer" IsReadOnly="True"></DataGridTextColumn>
                        <DataGridTextColumn Binding="{Binding Error}" Header="Meldung" IsReadOnly="True"></DataGridTextColumn>
                        <DataGridTextColumn Binding="{Binding DetailInfo}" Header="Detail" IsReadOnly="True"></DataGridTextColumn>
                    </DataGrid.Columns>
                </DataGrid>
      </TabItem>
   </TabControl>
</Grid>

这很好用,我可以通过右键单击一行来看到上下文菜单,但唯一的问题是事件没有触发(只有在我在网格本身左键单击时才会触发,而不是使用上下文菜单)。如果有人能帮助我,我将不胜感激...这将拯救我的一天:-)) 非常感谢!kr!
1个回答

4

您似乎没有为MenuItem添加任何事件处理程序,因此它无法执行任何操作。

<ContextMenu x:Key="DataRowContextMenu">
    <MenuItem Header="Detaillierte Fehlerbehandlung"
              Click="MyClickEventHandler"/>
</ContextMenu>

1
哈,没错!!它正在工作。 我已经删除了EventSetter,因为在MenuItem事件中不再需要它了。 我太过于专注于EventSetter了。 非常感谢! - FiorinaN
如果你在使用WPF而不是Silverlight,那么命令(Command)比点击事件处理程序(click event handler)更加强大。 - Greg D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接