2012-11-29 23 views
11

Çok sütunlu bir DataGrid'im var.WPF DataGrid Sütun Genişliği Otomatik ve Kaydırma Çubuğu

Pencerenin tüm sütunlardan daha dar olması durumunda herşeyi gösteren kaydırma çubuğu bulunan Width="Auto" öğesini istiyorum. Pencere daha genişse sütunların boş alana yayılmasını istiyorum, böylece ölü alan yok.

Temel olarak, sütunun minimum genişliğinin içeriğe veya başlığa tam olarak sığmasını istiyorum. Pencere genişse genişler ve genişler. XAML içinde

+0

Eğer şimdiye kadar var XAML neler yayınlayabilir? –

+0

Genişlik otomatik olarak ayarlanmışsa, kaydırma çubuğu asla görüntülenmez. –

+0

@EduardoBasit daha fazla açıklama eklemek için değiştirilmiş soru – Brent

cevap

8

özel DataGrid ile bu kullanma

dataGrid.Loaded += (s, e) => { // Column widths 
    dataGrid.Columns.AsParallel().ForEach(column => { 
     column.MinWidth = column.ActualWidth; 
     column.Width = new DataGridLength(1, DataGridLengthUnitType.Star); 
    }); 
}; 

eklemek UserControl Yapıcıda

DataGrid ColumnWidth="Auto" kurmak ve iyi çalışıyor. Eğer XAML ayarlanan bu özellikleri olduğundan emin olun size belirtildiği şekilde WPF DataGrid tüm yatay alan "doldurmak" için

+0

cevabını gönderirim. Ayrıca TextRenderer.MeasureText özelliğine de bakabilir ve min. –

+0

-1 standart WPF ve .NET 4.5 ile derlenmez; çok fazla kullanmak için kullanmayın ** özel ** ** Datagrid ** kodu – MickyD

+2

-1 de sağlanmazsa ** AsParallel() ** genellikle GUI elemanları – MickyD

22

:

<DataGrid 
    HorizontalAlignment="Stretch" 
    HorizontalContentAlignment="Stretch" 
    ColumnWidth="*" /> 
+2

ColumnWidth = "*" harika çalışıyor :) –

+2

Bu çözüm, tüm sütunların içeriğine sığacak kadar geniş olmaması durumunda, kılavuzun yatay kaydırma çubuğu almasını engeller. – dlf