代码之家  ›  专栏  ›  技术社区  ›  stiank81

与行详细信息一起使用时,WPF DataGrid的高度错误

  •  2
  • stiank81  · 技术社区  · 15 年前

    我对.net4附带的新DataGrid组件有问题。使用行详细信息时出现问题。使用rowdetails,当选择元素时,网格的总高度将增加。这对于显示所有行和行细节以及我所期望的内容是必要的。选择另一行时,第一行详细信息将折叠,新选定行的详细信息将展开。现在的问题是,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; }
    }
    

    选择一个元素,然后选择另一个元素-您将看到数据报的蓝色背景正在显示。

    我有办法解决这个问题吗?我假设这是组件中的一个bug。如果没有解决方案,有人能告诉我哪里报告这个错误吗?

    2 回复  |  直到 12 年前
        1
  •  3
  •   stiank81    15 年前

    当DataGrid在WPF工具包中时,我也遇到了同样的问题,当时也找不到解决方案。如果有人能解决我的问题-请大声喊出来!但我猜这是组件中的一个bug,并提交了一个 bug report to Microsoft .

        2
  •  0
  •   Community CDub    8 年前

    答案如下: WPF DataGrid Row not adjusting height after expanding Row Details

    可以使用DataGrid样式中的下一个setter:

    <Setter Property="ScrollViewer.CanContentScroll" Value="False" />
    

    我觉得这是某种魔法。