當我有第二個數據網格作爲rowdetailstemplate時,我在我的數據網格中遇到了一些奇怪的行爲。主數據網格綁定到我的項目集合,並且詳細信息數據網格綁定到項目包含的子項目集合。現在,所有這些都完美呈現,但是當我想直接單擊SubItemsGrid中的單元格時,它首先選擇包含SubItemsGrid的主網格中該行的第一個單元格。我必須再次單擊才能到達要選擇的單元格。選擇RowDetailsTemplate中的WPF DataGrid的單元格
有沒有人有過這樣的想法?如果是這樣,是否有解決方法?
這是我的加價(部分):
<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()
}
}
調試表明,「焦點」方法被調用右邊格,但我沒有得到任何的視覺效果。然而,我感覺我非常接近解決方案。任何人?
第一次點擊的吞嚥是我見過自己,雖然沒有與子網格。它也在[這sliverlight.net線程](http://forums.silverlight.net/forums/p/208961/491280.aspx)中評論。我還沒有想出一個通用的解決方案。 – 2011-04-21 15:20:04