2

.NET4に付属する新しいDataGridコンポーネントに問題があります。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; }
}

1つの要素を選択し、次に別の要素を選択すると、DataGridの青い背景が表示されます。

この問題を解決する方法はありますか?これはコンポーネントのバグだと思います。解決策がない場合; 誰かがバグを報告する場所を教えてもらえますか?

4

2 に答える 2

3

DataGridがWPFツールキットにあるときに同じ問題が発生し、解決策も見つかりませんでした。誰かが私に解決策を持っているなら-叫んでください!しかし、これはコンポーネントのバグだと思い、Microsoftにバグレポートを提出しました。

于 2010-04-22T19:24:46.173 に答える
0

答えはここにあります:行の詳細を展開した後、WPFDataGrid行が高さを調整しない

DataGridスタイルで次のセッターを使用できます。

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

ある種の魔法だと思います。

于 2013-02-28T07:44:04.227 に答える