回答:
Width="*"
列を使用する場合、利用可能なスペースを拡大するために塗りつぶします。
すべての列でグリッドを均等に分割する場合は、これをすべての列に均等に適用します。残りのスペースを埋めるだけの場合は、その列に適用し、残りは「自動」または特定の幅にします。
Width="0.25*"
(たとえば)列が使用可能な幅の1/4を占めるようにする場合にも使用できます。
<DataGrid AutoGenerateColumns="True" ColumnWidth="*" ItemsSource={Binding} />
ColumnWidth="*"
に望ましい効果がありますWidth="*"
列のWidth
プロパティを次のような比例幅に設定します*
私の2セント->
パーティーに非常に遅い
DataGrid-> Column-> Width = "*"は、DataGrid親コンテナに固定幅がある場合にのみ機能します。
例:DataGridをグリッドに配置->列のwidth = "Auto"、次にWidth = "*"がDataGridで機能しないが、グリッドを設定した場合->列Width = "450"は、修正された場合に正常に機能する
HorizontalAlignment = "Center"(デフォルトは "Strech")を追加しましたが、データグリッドが必要なだけの幅になるため、問題が解決しました。(データグリッドの幅設定がある場合は削除されました。)
C#の回避策を探している人のために:
あなたは「AutoGeneratedColumns」は有効になっているためにいくつかの理由のために必要がある場合は、あなたが行うことができます一つのことは、あなたが自動リサイズすることにしたいものを除き、すべての列の幅を指定することです(それがされます残りのスペースを取りませんが、それは意志にサイズを変更セルの内容)。
例(dgShopppingCartは私のDataGrid):
dgShoppingCart.Columns[0].Visibility = Visibility.Hidden;
dgShoppingCart.Columns[1].Header = "Qty";
dgShoppingCart.Columns[1].Width = 100;
dgShoppingCart.Columns[2].Header = "Product Name"; /*This will be resized to cell content*/
dgShoppingCart.Columns[3].Header = "Price";
dgShoppingCart.Columns[3].Width = 100;
dgShoppingCart.Columns[4].Visibility = Visibility.Hidden;
ユーザーがウィンドウを最大化するときにDataGridのサイズを変更する必要があるため、私にとっては回避策として機能します。
AutoGenerateColumns="True"
?