2011-07-04 48 views
4

我搜索了很多關於這個話題。我不得不說,我很新的WPF ..文本菜單上的WPF DataGrid行 - 事件不會觸發

這裏是我的問題: 我有一個datagrid,並需要在datagrid-Row上的一個上下文菜單。

我有這樣的代碼:

<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> 

這工作得很好,我可以看到一排用鼠標右鍵clickin上下文菜單,但唯一的一點是,該事件將不會觸發(只有當我左短聲在電網本身,而不是通過上下文菜單)

我將不勝感激,如果有人可以幫助我..它會拯救我的一天:-))

非常感謝提前!

kr!

回答

4

您似乎沒有向MenuItem添加任何事件處理程序,因此它什麼都不做。

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

哈,沒錯!它正在工作。 我已經刪除了事件集,因爲它不再需要MenuItem事件.. 我是如此固定在EventSetter上.. 非常感謝! – FiorinaN

+0

如果您使用的是WPF而不是Silverlight,則命令可能比click事件處理程序更強大。 –