我有一个绑定的 DataGrid 和各种其他控件(数据网格外部),它们显示有关数据网格中所选行的更多详细信息。通过数据绑定或处理数据网格上的 SelectionChanged 事件很容易做到这一点。
但是,如何在不要求用户选择行的情况下执行此操作 - 例如,在“鼠标悬停”时,我可以更改所选项目或获取鼠标“下方”的行/项目。
在你的容器类中尝试类似的东西,如 UserControl、Grid、StackPanel 等......
public class MyContainerClass : FrameworkElement
{
public MyContainerClass()
{
base.Loaded += OnLoaded;
}
private void OnLoaded(object sender, RoutedEventArgs e)
{
m_DataGrid.MouseMove += OnMouseMove;
}
private void OnMouseMove(object sender, MouseEventArgs e)
{
DataGridRow item = (sender as DependencyObject).ParentOfType<DataGridRow>();
if (item != null && m_DataGrid.SelectedIndex != item.GetIndex())
m_DataGrid.SelectedIndex = item.GetIndex();
}
}
并添加这个辅助类扩展...
internal static class DependencyObjectExt
{
// Extension for DependencyObject
internal static TT ParentOfType<TT>(this DependencyObject element) where TT : DependencyObject
{
if (element == null)
return default(TT);
while ((element = VisualTreeHelper.GetParent(element)) != null)
{
if (element is TT)
return (TT)element;
}
return null;
}
}
祝你好运,
吉姆·麦柯迪
阴阳钱 http://yinyangmoney.com/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)