ContextMenu на строке данных WPF DataGrid - событие не запускается - PullRequest
4 голосов
/ 04 июля 2011

Я много искал по этой теме .. Должен сказать, что я довольно новичок в 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>

Это работает нормально, я могу увидеть контекстное меню, щелкнув правой кнопкой мыши по строке, но единственное, что событие не запускается (только когда я щелкаю левой кнопкой мыши в самой сетке, а не в контекстном меню)

Буду признателен, если кто-нибудь сможет мне помочь ... это спасет мой день: -))

Заранее большое спасибо!

кр!

1 Ответ

4 голосов
/ 04 июля 2011

Вы, похоже, не добавили обработчик событий в MenuItem, поэтому он ничего не делает.

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