2017-11-11 161 views
0

我想在DataGrid行上添加一个onclick事件,但它不适用于我的代码。它只适用于TargetType="DataGridCell"。这是我的DataGrid;WPF DataGrid TargetType =“DataGridRow”not for Event =“MouseDoubleClick”

<DataGrid Name="CourtCasesGrid" Grid.Column="0" BeginningEdit="dataGrid_BeginningEdit" Grid.Row="0" SelectedItem="{Binding SelectedCourtCase}" CanUserReorderColumns="True" CanUserResizeColumns="True" CanUserResizeRows="False" CanUserSortColumns="True"> 
    <DataGrid.Resources> 
     <Style TargetType="DataGridRow"> 
      <EventSetter Event="MouseDoubleClick" Handler="CourtCasesGridRowDoubleClick"/> 
     </Style> 
    </DataGrid.Resources> 
</DataGrid> 

回答

0

我已经在这工作,并成功得到了上双击选定的刺激事件,同样允许行的值要收集的行。我已经使用Code-Behind完成了这项工作,但如果这对您有用,也可以协助使用MVVM方法。

这里的 'MainWindow.xaml' 后台代码:

using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 

/// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public DataGridRow SelectedRow { get; set; } 
     public ObservableCollection<CourtCase> CourtCases { get; set; } 
     public MainWindow() 
     { 
      InitializeComponent(); 

      CourtCases = new ObservableCollection<CourtCase>(); 
      CourtCases.Add(new CourtCase("1")); 
      CourtCases.Add(new CourtCase("2")); 
      CourtCases.Add(new CourtCase("3")); 
      CourtCases.Add(new CourtCase("4")); 

      SelectedRow = new DataGridRow(); 

      CourtCasesGrid.DataContext = CourtCases; 
     } 

     private void CourtCasesGridRowDoubleClick(object sender, MouseButtonEventArgs e) 
     { 
      DataGridRow row = sender as DataGridRow; 
     } 
    } 

这里的 'MainWindow.xaml' 视图:

<Grid> 
     <DataGrid ItemsSource="{Binding CourtCases,RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}" Name="CourtCasesGrid" ColumnWidth="*" 
        SelectionUnit="FullRow"> 
      <DataGrid.Resources> 
       <Style TargetType="DataGridRow"> 
        <EventSetter Event="MouseDoubleClick" Handler="CourtCasesGridRowDoubleClick"/> 
       </Style> 
      </DataGrid.Resources> 
     </DataGrid> 
    </Grid> 

即使简单的类我使用持有法庭数据,供您参考:

public class CourtCase 
{ 
    public string Name { get; set; } 
    public CourtCase() 
    { 
     Name = ""; 
    } 
    public CourtCase(string n) 
    { 
     Name = n; 
    } 
} 

希望能对您有所帮助!