2010-04-22 53 views
2

我遇到與.NET4一起提供的新DataGrid組件的問題。使用RowDetails時會發生此問題。使用RowDetails時,選擇元素時,網格的總高度會增加。這是顯示所有行和RowDetails以及我所期望的。當選擇另一行時,第一個RowDetails將摺疊,並且新選定行的詳細信息被展開。現在的問題是,DataGrid的總高度似乎包括前一個元素的摺疊rowdetails。我的猜測是,它首先打開新的行細節,然後崩潰舊的 - 而不會調整到較小的尺寸。與RowDetails一起使用時,WPF 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正在顯示。

有什麼辦法可以解決這個問題嗎?我假設這是組件中的一個錯誤。如果沒有解決方案;有人可以告訴我在哪裏報告錯誤?

回答

3

當DataGrid位於WPF Toolkit中時,我遇到了同樣的問題,並且無法找到解決方案。如果有人有我的解決方案 - 請大聲喊出來!但我猜這是組件中的一個錯誤,並提交了一個bug report to Microsoft

+1

微軟已經接受它作爲一個錯誤,所以猜測他們修復之前沒有解決方案,然後.. – stiank81 2010-04-26 06:52:49

+0

你有沒有找到任何解決方法? – Artiom 2012-08-16 01:49:19