【发布时间】:2010-12-07 13:09:39
【问题描述】:
当我有第二个数据网格作为 rowdetails 模板时,我的数据网格出现了一些奇怪的行为。主数据网格绑定到我的项目集合,详细数据网格绑定到项目包含的子项目集合。现在所有这些都完美呈现,但是当我想直接单击 SubItemsGrid 中的一个单元格时,它首先选择包含 SubItemsGrid 的主网格中的行的第一个单元格。我必须再次单击才能到达我要选择的单元格。
有没有人也遇到过这种情况?如果是这样,是否有解决方法?
这是我的标记(部分):
<DataGrid x:Name="ItemGrid" ItemsSource="{Binding Path=Items}" AutoGenerateColumns="False" SelectionUnit="Cell"
RowDetailsVisibilityMode="Visible" CanUserResizeRows="False" AreRowDetailsFrozen="False" VerticalAlignment="Top"
CanUserAddRows="False" CanUserDeleteRows="False" VerticalScrollBarVisibility="Hidden">
<DataGrid.Columns>
<DataGridTextColumn Header="Column1" Binding="{Binding Path=ID}" Width="350"/>
<DataGridTextColumn Header="Column2" Binding="{Binding Path=Name}" Width="80"/>
<DataGridTextColumn Header="Column3" Binding="{Binding Path=Description}" Width="80"/>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid x:Name="SubItemsGrid" ItemsSource="{Binding Path=SubItems}" AutoGenerateColumns="False"
SelectionUnit="Cell" HeadersVisibility="None" Margin="50,0,0,0" VerticalAlignment="Top" CanUserAddRows="False"
CanUserResizeRows="False" CanUserDeleteRows="False" BorderThickness="0">
<DataGrid.Columns>
<DataGridTextColumn Header="Column1" Binding="{Binding Path=Name}" Width="300" />
<DataGridTextColumn Header="Column2" Binding="{Binding Path=Description}" Width="80"/>
<!-- Etc.-->
---编辑---
好的,我想出了在SubItemsGrid上处理鼠标向上事件的想法,然后在代码中将焦点设置到SubItemsGrid,像这样:
private void SubItemsGrid_MouseUp(object sender, MouseButtonEventArgs e)
{
DataGrid selectedGrid = sender as DataGrid;
if (selectedGrid != null)
{
selectedGrid.Focus()
}
}
调试显示“焦点”方法在正确的网格上被调用,但我没有得到任何视觉结果。然而,我觉得我非常接近解决方案。有人吗?
【问题讨论】: