2016-04-11 4 views
0

Kurz, ich bin neu in Grid und WPF und aus irgendeinem Grund kann ich nicht sehen, meine Inhalte in meinem ListView und ich bin mir ziemlich sicher, dass Grid es verursacht.
C# ListView in WPF, kann Inhalt nicht sehen

<Grid Canvas.Left="223" Canvas.Top="228"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="9*"/> 
      <RowDefinition Height="28*"/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="8*"/> 
      <ColumnDefinition Width="21*"/> 
      <ColumnDefinition Width="29*"/> 
      <ColumnDefinition Width="29*"/> 
     </Grid.ColumnDefinitions> 
     <ListView HorizontalAlignment="Left" Height="123" VerticalAlignment="Top" Width="589" Name="LibraryList" Margin="-188,-76,-141.001,-10" IsEnabled="False" Grid.ColumnSpan="4" Grid.RowSpan="2" > 
      <ListView.View> 
       <GridView> 
        <GridViewColumn Header="Item Name" DisplayMemberBinding="{Binding ItemName}" Width="70"/> 
        <GridViewColumn Header="Copy Number" DisplayMemberBinding="{Binding CopyNumber}" Width="85"/> 
        <GridViewColumn Header="Guid" DisplayMemberBinding="{Binding Guid}" Width="100"/> 
        <GridViewColumn Header="Print Date" DisplayMemberBinding="{Binding Date}" Width="90"/> 
        <GridViewColumn Header="Best Seller" DisplayMemberBinding="{Binding BestSeller}" Width="90"/> 
        <GridViewColumn Header="Category" DisplayMemberBinding="{Binding Category}" Width="70"/> 
        <GridViewColumn Header="Sub Category" DisplayMemberBinding="{Binding SubCategory}" Width="80"/> 
       </GridView> 
      </ListView.View> 
     </ListView> 
    </Grid> 

Die Implementierung ist:

ManageCtors.InitJournal(int.Parse(copyNumber.Text), itemName.Text, DateTime.Parse(TimePrinted.Text), int.Parse(Guid.Text), (JournalCategory)Enum.Parse(typeof(JournalCategory), SubCategory.Text)); 

//Add to ListView 
string[] row = { itemName.Text, copyNumber.Text, Guid.Text , TimePrinted .Text, Category.Text , SubCategory.Text = "None" }; 
ListViewItem _listViewItem = new ListViewItem(); 
_listViewItem.Content = row; 
LibraryList.Items.Add(_listViewItem.Content); 

Jede Idee?
BTW: Manchmal bekomme ich eine Nachricht: Eingabe war nicht im richtigen Format.

+0

Überprüfen Sie Ihr Debug-Ausgabefenster in Visual Studio auf verbindliche Fehler – benPearce

+0

Ihre Eingabezeichenfolge-Formatfehler stammen wahrscheinlich aus der ManageCtors-Zeile für eine der Operationen .Parse – benPearce

Antwort

0

Die Daten, an die Sie binden, sind ein Array von Zeichenfolgen, aber in jeder der GridViewColumns sind Sie nach Namen gebunden. Dies ist wahrscheinlich das Problem.

Am besten modellieren Sie die Datenzeile in ihre eigene Klasse und setzen Sie eine Instanz der Klasse auf die ListViewItem.Content-Eigenschaft.

public class ItemData 
{ 
    public string ItemName { get; set; } 
    public int CopyNumber { get; set; } 
    public Guid Guid { get; set; } 
    public DateTime Date { get; set; } 
    public string BestSeller { get; set; } 
    public string Category { get; set; } 
    public string Subcategory { get; set; } 
} 


ItemData row = new ItemData { 
      // set each property value 
     }; 
ListViewItem _listViewItem = new ListViewItem(); 
_listViewItem.Content = row; 
LibraryList.Items.Add(_listViewItem.Content); // not sure if you need content here 

Ich glaube, Sie auch besser dran wären, auf dem Listview die Itemssource-Bindung, anstatt das Hinzufügen von Elementen direkt auf die Listview Items-Auflistung.

ObservableCollection<ItemData> items = new ObservableCollection<ItemData>(); 
// add your ItemData instances to the items collection 
LibraryList.ItemsSource = items; 

Sie wäre auch besser nach dem MVVM Muster, von denen viele Ratschläge dort auf Stackoverflow ist und an anderer Stelle Sie den Start.