2016-04-25 27 views
1

私はDataGridColumnWidth="*"ScrollViewerとし、HorizontalScrollBarVisibility="Auto"としています。残念ながら、この組み合わせはうまく動作していないようです。 DataGridが完全なウィンドウ幅に渡って正しく表示されている間は、列は超小型(MinWidth)です。私がHorizontalScrollBarVisibilityDisabledに変更した場合は動作しますが、希望するScrollViewerの動作が失われます。DataGrid.ColumnWidth = "*"はScrollViewerで機能しません

最小限の実施例:

<Window x:Class="WPF_Sandbox.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:WPF_Sandbox" 
     Title="MainWindow" 
     x:Name="ThisControl"> 
    <ScrollViewer HorizontalScrollBarVisibility="Auto"> 
     <DataGrid AutoGenerateColumns="False" ColumnWidth="*"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Column 1" /> 
       <DataGridTextColumn Header="Column 2" /> 
       <DataGridTextColumn Header="Column 3" /> 
       <DataGridTextColumn Header="Column 4" /> 
      </DataGrid.Columns> 
     </DataGrid> 
    </ScrollViewer> 
</Window> 

はなぜこれが起こって、どのように私はそれを回避することができますか?

+0

試みは何もしない2 *代わりに* –

+0

@MahdiFarhaniを使用します。 –

+0

主な問題はScrollViewerですが、私は理由を見つけることができます。 ScrollViewerを削除すると、すべてのことが良好です。 –

答えて

3

DatagridがScrollViewerの内部にあるため、実質的に無限に拡張するため、幅を計算できません。これは、あなたがこのように、ScrollViewerのViewportWidthにDataGridの幅をバインドすることができます動作させるために:

<DataGrid AutoGenerateColumns="False" ColumnWidth="*" 
Width="{Binding RelativeSource={RelativeSource FindAncestor, 
AncestorType={x:Type ScrollViewer}}, Path=ViewportWidth}"> 
関連する問題