2014-08-28 1 views
5

Ich bin neu in WPF String.length, und ich versuche wirklich von mir so viel wie möglich, um herauszufinden, ...WPF Datagrid bindet statt String Text

Ich habe mein erstes Datagrid-Steuerelement erstellt, und ich versuche es mit einer Liste von Strings zu füllen, wie unten:

<UserControl x:Class="DataGridTest" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid Style="{StaticResource ContentRoot}"> 
     <DataGrid Name="MyDataGrid" ItemsSource="{Binding}" HorizontalAlignment="Stretch" Height="500"/> 
    </Grid> 
</UserControl> 

Private Sub DataGridTest_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded 
     Dim StringCollection As List(Of String) = New List(Of String) 
     StringCollection.Add("Test") 
     StringCollection.Add("Test1") 
     StringCollection.Add("Test2") 
     StringCollection.Add("Test3") 
     StringCollection.Add("Test4") 
     MyDataGrid.DataContext = StringCollection 

    End Sub 

aber es füllt tatsächlich mit einer Überschrift „Länge“ und Werten wie die Länge der Saiten. Warum füllt es sich nicht selbst mit den String-Werten?

Es ist klar, dass ich hier etwas Grundlegendes vermisse, aber ich kann nicht für das Leben von mir herausfinden, was es ist.

Vielen Dank im Voraus!

Antwort

10

Da DataGrid standardmäßig automatisch Spalten aus gegebener Elementklasse generiert, wird nach Eigenschaften in String Klasse gesucht, die in Spalte konvertiert werden kann. Sie können das vermeiden, indem Sie Ihre eigene Säule zu schaffen und AutoGenerateColumns

<DataGrid Name="MyDataGrid" ItemsSource="{Binding}" ... AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding}" Header="Something"/> 
    </DataGrid.Columns> 
</DataGrid> 
+1

ausschalten oder einfach nur einen 'ListBox' für eine einzelne Spalte von Strings verwenden - es sei denn, Sie einen Header oder etwas Besonderes benötigen. –

+0

@lc. oder verwenden Sie 'ListBox', aber es ist nicht klar, ob OP Artikel bearbeiten möchte oder nicht, da es sich ändert, wenn Sie' ItemTemplate' oder einfach 'DisplayMemberPath' brauchen und es auch nicht klar ist, ob OP Spaltenüberschriften will oder nicht. – dkozl

+0

Danke, das macht Sinn. Ich habe den obigen Code für eine Lernübung verwendet - die Endkontrolle wird zur Bearbeitung verwendet. –