WPF DataGrid TargetType =“DataGridRow”not for Event =“MouseDoubleClick”
问题描述:
我想在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>
答
我已经在这工作,并成功得到了上双击选定的刺激事件,同样允许行的值要收集的行。我已经使用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;
}
}
希望能对您有所帮助!