2014-03-03 39 views
0

是否有可能在后面的代码中执行以下操作(在数据网格中设置头双击事件)?如果是,如何?我搜索的任何内容都没有显示可以访问数据网格标题的样式!如何设置数据网格中的头双击事件

<DataGrid ...> 
    <DataGrid.Resources> 
     <Style TargetType="DataGridColumnHeader"> 
      <EventSetter Event="MouseDoubleClick" Handler="OnTableDoubleClick" /> 
     </Style> 
    </DataGrid.Resources> 
    ... 

非常感谢。

编辑

其他的尝试后,我也试过这个从DataGrid中得到的CustomDataGrid类的构造函数:

 Style _style = new Style(typeof(DataGridColumnHeader)); 
     _style.BasedOn = Application.Current.Resources["DataGridColumnHeaderStyle"] as Style; 
     _style.Setters.Add(new EventSetter(MouseDoubleClickEvent, new MouseButtonEventHandler(OnTableDoubleClick))); 
     this.ColumnHeaderStyle = _style; 

如果我也明白我这样做是应该添加双击事件的头部样式,但实际上它什么都不做,这意味着处理程序不会在运行时调用。

回答

1

您需要在DataGridRowHeader申报风格:

<DataGrid> 
     <DataGrid.Resources> 
      <Style TargetType="DataGridRowHeader"> 
       <EventSetter Event="MouseDoubleClick" 
          Handler="DataGridRow_MouseDoubleClick"/> 
      </Style> 
     </DataGrid.Resources> 
    </DataGrid> 

如果你正在谈论的列标题。将DataGridRowHeader替换为DataGridColumnHeader

+0

对不起,我的坏,因为速度我复制了错误的代码块。我其实是指DataGridColumnHeader。我更新了这个问题。无论如何,问题是我想从代码背后而不是从xaml做到这一点,它似乎并没有工作。 – user3346850

+0

因此,你需要在代码后面显示你的代码,你已经尝试过并且不能工作。 –

+0

为什么你在代码背后做这件事?你有资源已经在样式中声明。那么,为什么不在那里声明事件设置者。而且,你总是可以从XAML执行'BasedOn'。 –