Я испытываю какое-то странное поведение в моей сетке данных, когда у меня есть вторая сетка данных как шаблон строки.Основная сетка данных связана с моей коллекцией элементов, а сетка данных деталей связана с коллекцией подэлементов, содержащихся в элементе.Теперь все это прекрасно отрисовывается, но когда я хочу щелкнуть ячейку в 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.-->
--- EDIT ---
Хорошо, явозникла идея обработать событие mouseUp в SubItemsGrid, а затем установить фокус на SubItemsGrid в коде, например так:
private void SubItemsGrid_MouseUp(object sender, MouseButtonEventArgs e)
{
DataGrid selectedGrid = sender as DataGrid;
if (selectedGrid != null)
{
selectedGrid.Focus()
}
}
Отладка показывает, что вызывается метод 'Focus'правильная сетка, но я не получаю никаких визуальных результатов.Однако я чувствую, что я очень близок к решению.Кто-нибудь? * * 1013