2011-09-15 11 views
1

私は2つの列を持つWPF DataGridを持っています。 2番目の列にグリッドを自動的にフィットさせたいので、その幅を "*"に設定します。しかし、実行時に、DataGridはばかげた幅にサイズ変更されます。ここでDataGridのスター型列は、DataGrid全体のサイズを変更します

は削除(と思う)余分なコントロールと属性との私の基本的なマークアップです:

<Grid> 
    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> 
     <Grid> 
      <StackPanel> 
       <DataGrid Name="MyGrid" AutoGenerateColumns="False" 
          CanUserAddRows="False" CanUserReorderColumns="False" 
          CanUserResizeColumns="False"> 
        <DataGrid.Columns> 
         <DataGridTextColumn Header="Column 1" Width="Auto" Binding="{Binding Field1}"/> 
         <DataGridTextColumn Header="Column 2" Width="*" Binding="{Binding Field2}"/> 
        </DataGrid.Columns> 
       </DataGrid> 
      </StackPanel> 
     </Grid> 
    </ScrollViewer> 
</Grid> 

私は問題は、データグリッドがScrollViewerの中にあることであると思います。

Width="{Bidning ElementName=MyGrid, Path=ActualWidth}" 
this postで提案されているように

、ない運:私は、DataGridの幅にScrollViewerのの幅を設定してみました。 Horizo​​ntalScrollBarVisibilityをDisabledに設定しようとしましたが、すべてが消えます(真剣に)。

私はまた、このすべてが、ウインドウに座っている別のUserControlにあるUserControlにあることを言及する必要があります。ウインドウには、おそらく「消えている」すべてが関係しています(幅が狂っていて、窓')。

+1

あなたは.NET 4.0を使用していますか?私はここで約2-3週間前に同じトピックについて別のスレッドを思い出しています。私は、3.5で動作した4.0のバグであると判断したと思います。 – tsells

+0

はい、.NET 4.0を使用しています。これが重複している場合は、誰かが私に前の質問を教えてもらえると感謝します。 –

+0

私はそれを探してそれを見つけることができませんでした。 WPFタグの下を見て、やり直してみてください。 – tsells

答えて

1

DataGridの前のすべてを削除して、レイアウトを簡素化してください。 DataGridには既定のテンプレートに埋め込まれたScrollViewerが既に含まれています。さらに、StackPanelを使用することで、すべての利用可能な領域を子どもが埋めることができます。StackPanelはコンテンツのサイズに応じて伸びます。したがって、DataGridは無限に伸びます。

私はまた、XにデータグリッドのNameプロパティを変更してある名前を、なぜここにある: In WPF, what are the differences between the x:Name and Name attributes?

<DataGrid 
    x:Name="MyGrid" 
    AutoGenerateColumns="False" 
    CanUserAddRows="False" 
    CanUserReorderColumns="False" 
    CanUserResizeColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Column 1" Width="Auto" Binding="{Binding Field1}"/> 
     <DataGridTextColumn Header="Column 2" Width="*" Binding="{Binding Field2}"/> 
    </DataGrid.Columns> 
</DataGrid> 
関連する問題