Para reproducir este problema, agregue un control de usuario, pegue el xaml a continuación y luego agregue una instancia a una ventana. Finalmente establezca el contexto de datos de la ventana en una instancia de ADummyDataContext (también abajo)Wpf DataGrid problema
Cuando ejecuta la aplicación por primera vez, debe obtener una cuadrícula con tres categorías, cada una con un gato. Si hace clic en cualquiera de las dos categorías inferiores y hace clic en un nombre de gato, aparecerá una fila azul que muestra solo el nombre del gato.
Sin embargo, si hace clic en la primera fila y hace clic en la fila del gato, la fila azul no aparecerá. NOTA: Esto solo ocurre la primera vez que ejecuta la aplicación. Tan pronto como haga clic en cualquier otro gato, el gato en la primera categoría funcionará como se espera.
<UserControl x:Class="WpfUserControls.SimpleGridControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Background="#FFE46400">
<Grid Margin="2,2,2,2">
<Grid.RowDefinitions>
<RowDefinition Height="26" MaxHeight="26" MinHeight="26" />
<RowDefinition />
<RowDefinition Height="26" MaxHeight="26" MinHeight="26" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ToolBar Grid.Row="0">
<Button Content="Button" Name="button1" VerticalAlignment="Center" Width="75" />
<Button Content="Button" Name="button2" VerticalAlignment="Center" Width="75" />
</ToolBar>
<DataGrid CanUserAddRows="False" ItemsSource="{Binding Path=KittensView}" AutoGenerateColumns="True" Grid.Row="1" HorizontalAlignment="Stretch" Name="dataGrid1" VerticalAlignment="Stretch">
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=Name}" />
</StackPanel>
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander>
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}" Margin="0,0,5,0"/>
<TextBlock Text="{Binding Path=ItemCount}"/>
<TextBlock Text=" Items"/>
</StackPanel>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</DataGrid.GroupStyle>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<StackPanel Background="LightBlue" Orientation="Horizontal" >
<!-- <Image Height="32" Width="32" Source="/WpfUserControls;component/cat.png"></Image> -->
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" Height ="20" Text="{Binding Path=Name}"/>
</StackPanel>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
<StatusBar Grid.Row="2"></StatusBar>
</Grid>
</UserControl>
Y aquí está la clase de contexto de datos y una clase de Kitten.
public class ADummyDataContext
{
public List<Kitten> Kittens { get; set; }
public ADummyDataContext()
{
Kittens = new List<Kitten>
{
new Kitten {Color = "Orange", Name = "Alfie", Weight=6, Sex="Male"},
new Kitten {Color = "Black and White", Name = "Smudge", Weight = 4, Sex="Female"},
new Kitten {Color = "Grey", Name = "Charlotte", Weight = 5, Sex="Female"}
};
KittensView = new ListCollectionView(Kittens);
KittensView.GroupDescriptions.Add(new PropertyGroupDescription("Weight"));
}
public ListCollectionView KittensView { get; set; }
}
public class Kitten
{
public string Name { get; set; }
public string Color { get; set; }
public int Weight { get; set; }
public string Sex { get; set; }
}
Estaría particularmente interesado en saber cómo hacer para descubrir cuál es el problema aquí.
Gracias
Esto probablemente no arreglar el problema, pero en el pasado he tenido problemas al usar Listas, tal vez intente cambiar la lista a un ObservableCollection? – Purplegoldfish
También es un muy buen punto. Gracias :) – Ian