【问题标题】:How to know when a DataGridRow is clicked?如何知道何时单击 DataGridRow?
【发布时间】:2022-01-22 12:55:07
【问题描述】:
【问题讨论】:
标签:
c#
xaml
datagrid
windows-community-toolkit
winui-3
【解决方案1】:
我最终使用了PointerReleased 事件。 (之前我已经放弃了这个事件,因为我无法确定点击了哪一行。)
<ctWinUI:DataGrid
PointerReleased="dgDesktops_PointerReleased"
...>
为了找到被点击的DataGridRow,我遍历了可视化树:
private async void dgDesktops_PointerReleased(object sender, PointerRoutedEventArgs e)
{
DataGridRow clickedRow = ViewUtils.FindParent<DataGridRow>((UIElement)e.OriginalSource);
if (clickedRow != null)
{
MyModel rowModel = (MyModel)clickedRow.DataContext;
// Do stuff
}
}
public static T FindParent<T>(DependencyObject childElement) where T : Control
{
DependencyObject currentElement = childElement;
while (currentElement != null)
{
if (currentElement is T matchingElement)
{
return matchingElement;
}
currentElement = VisualTreeHelper.GetParent(currentElement);
}
return null;
}
不是最优雅的解决方案,但它有效:)