У меня проблема с новым компонентом DataGrid, поставляемым с .NET4. Проблема возникает при использовании RowDetails. С RowDetails общая высота сетки увеличивается при выборе элемента. Это необходимо, чтобы показать все строки и RowDetails, и именно то, что я ожидаю. При выборе другой строки первые RowDetails свернутся, и детали для новой выбранной строки развернуты. Проблема сейчас в том, что общая высота DataGrid, похоже, включает в себя свернутые детали строк предыдущего элемента. Я предполагаю, что он сначала открывает новые детали строки, а затем сворачивает старые - и никогда не изменяет размеры до меньших размеров.
Рассмотрим этот простой DataGrid:
<DataGrid ItemsSource="{Binding Cars}" Background="Blue" SelectionMode="Single" AutoGenerateColumns="True" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="20,20,0,0" Width="450">
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock>Presenting the car details:</TextBlock>
<TextBlock Text="{Binding Brand}"></TextBlock>
<TextBlock Text="{Binding CarColor}"></TextBlock>
</StackPanel>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
Также требуется несколько строк в коде:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new MyViewModel();
}
}
public class MyViewModel
{
private readonly ObservableCollection<Car> _cars = new ObservableCollection<Car>();
public MyViewModel()
{
_cars.Add(new Car("Toyota", "Silver"));
_cars.Add(new Car("VW", "Black"));
_cars.Add(new Car("Audi", "Blue"));
}
public ObservableCollection<Car> Cars
{
get
{
return _cars;
}
}
}
public class Car
{
public Car(string brand, string color)
{
Brand = brand;
CarColor = color;
}
public string Brand { get; set; }
public string CarColor { get; set; }
}
Выберите один элемент, затем другой - и вы увидите, что синий фон DataGrid показывает.
Можно ли как-нибудь исправить эту проблему? Я предполагаю, что это ошибка в компоненте. Если нет решения; Может кто-нибудь сказать мне, где сообщить об ошибке?