2010-01-16 25 views
8

CanUserAddRows="True" yalnızca DataGrid'un ItemsSource numaralı verilerinde veri olduğunda boş bir satır ekleyemiyor. Orijinal öğe listesinde hiçbir satır olmadığında, CanUserAddRows="True" ayarlanmış olsa da, DataGrid yeni öğeler girmek için placeholder satır görüntülenmez. Niye ya?! Bu görünmek öncedenWPF DataGrid,

sayesinde Trindaz

+0

Ayrıca ne oluyor ekrandan çıkan sütunları görmek için sağa kaydırma yapamazsınız, öğeleriniz yok yatay kaydırma çubukları yok. –

cevap

2

WPF DataGrid ile ilgili bilinen bir sorun olarak. Tartışmaya bakın here (4. yorumdan başlayarak). Net olarak da göründüğü görülüyor. 4. Bu sorun için 3.5 ve 4 (beta2) çerçevelerinde bazı testler yaptım. TestGridItem altında olduğu

public class TestGridItems0 : ArrayList 
{ 
} 

public class TestGridItems1 : List<TestGridItem> 
{ 
} 

public class TestGridItems2<T> : List<TestGridItem> 
{ 
} 

:

public class TestGridItem 
{ 
    public string One { get; set; } 
    public string Two { get; set; } 
    public string Three { get; set; } 
} 

.net 3,5

TestGridItems0 ve TestGridItems1 Pls aşağıdaki sonuçları görmek:

Birinci Ben madde koleksiyonları 3 tip tanımlanmış boş bir koleksiyon için boş bir satır göstermedi; Nerede TestGridItems2 iyi çalışıyordu.

.net 4

sadece TestGridItems0 boş toplama hattı göstermedi; diğer 2 iyi çalıştı. grid için

xaml: Bu yardımcı olur

dataGrid.ItemsSource = new TestGridItems0(); 
dataGrid.ItemsSource = new TestGridItems1(); 
dataGrid.ItemsSource = new TestGridItems2<TestGridItem>(); 

umut,

+0

Basit bir '.ToList()' dönüşümü sorunu çözdü. İpucu için teşekkür ederim. –

1

sizin ItemsSource için boş öğeyi ekleyin ve sonra kaldırmak bakımından: Aşağıdaki

<my:DataGrid Name="dataGrid" AutoGenerateColumns="False" CanUserAddRows="True"> 
    <my:DataGrid.Columns> 
     <my:DataGridTextColumn Binding="{Binding One}" Header="One" /> 
     <my:DataGridTextColumn Binding="{Binding Two}" Header="Two" /> 
     <my:DataGridTextColumn Binding="{Binding Three}" Header="Three" /> 
    </my:DataGrid.Columns> 
</my:DataGrid> 

ürün kaynağı atandı nasıl o. Bunu yaptıktan sonra CanUserAddRows değerini true olarak ayarlamanız gerekebilir. Bu çözümü here olarak okudum: (Jarrey ve Rick Roen tarafından gönderilen iletiler)

ÖğelerSource'ı bir DataTable'ın DefaultView'üne ayarladığımda bu sorun vardı ve görünüm boştu. Sütunlar tanımlanmış olsa da, bunları elde edebilmeleri gerekiyordu. Heh.