2017-11-19 3 views
0

XAMLDaten nicht zu ListBox WPF Bindung

<Page x:Class="ManufacturingWPF.ShowHardware" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:local="clr-namespace:ManufacturingWPF" 
    mc:Ignorable="d" 
    d:DesignHeight="300" d:DesignWidth="300" 
    Title="ShowHardware"> 



<Grid Background="AliceBlue"> 
    <ListBox x:Name="HardwareList" ItemsSource="{Binding Hardware}" HorizontalAlignment="Left" Height="122" Margin="76,36,0,0" VerticalAlignment="Top" Width="149"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel> 
        <TextBlock Text="{Binding ID}"/> 
        <TextBlock Text="{Binding Date}"/> 
        <TextBlock Text="{Binding Nodes}"/> 
        <TextBlock Text="{Binding Repeaters}"/> 
        <TextBlock Text="{Binding Hubs}"/> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

</Grid> 

-Code Behind C#

public partial class ShowHardware : Page 
{ 
    public ShowHardware() 
    { 
     InitializeComponent(); 
     DisplayData(); 

    } 

    public void DisplayData() 
    { 
     //Datamodel MDM used for ADO and table creation 
     //Test is a class used to pass the model and as the name suggest 
     test it 

     ManufacturingDataModel MDM = new ManufacturingDataModel(); 
     Test t = new Test(MDM); 

     List<Hardware> x = t.GetHardware(); 

     foreach(Hardware i in x) 
     { 
      HardwareList.ItemsSource = i.Hubs.ToString(); 
     } 
    } 

} 

}

Ich bin vor Probleme, die Daten zu der Bindung Listbox wie im X gezeigt AML und Code-Behind-Inhalt. Ich habe vorherige Antworten ohne Glück versucht, habe meine Recherchen gemacht, aber anscheinend verpasse ich etwas oder vielleicht gibt es etwas, was ich nicht ganz verstehe. Itemsource, wie der Name andeutet, sollte an die Quelle gebunden sein, wo meine Daten gespeichert werden. In diesem Fall wäre die Quelle meine Klasse Hardware, die Daten für Knoten, Datum, Hubs usw. enthält. Und im Textblock binde ich diese Eigenschaften manuell und zeige die Werte an. Aber das funktioniert nicht. P.S. Meine DB-Tabelle ist ausgefüllt.

Antwort

0

Das liegt daran, dass ItemsSource ein IEnumerable ist und Sie ihm die Liste der Hardware selbst zuweisen. So sollte der Code in etwa so aussehen:

ManufacturingDataModel MDM = new ManufacturingDataModel(); 
Test t = new Test(MDM); 

List<Hardware> x = t.GetHardware(); 
HardwareList.ItemsSource = x; 

//or 
foreach (Hardware h in x) 
    HardwareList.Items.Add(h); 
+0

Mit freundlichen Grüßen für die Antwort. Es funktionierte . Danke vielmals :) – Goku1989

0

Dieser Code scheint falsch

foreach(Hardware i in x) 
{ 
    HardwareList.ItemsSource = i.Hubs.ToString(); 
} 

Dann für Itemssource-Bindung hat eine Sammlung sein (List, ObservableCollecion, IEnumerable<> ...).

Versuchen HardwareList.ItemsSource = x; und entfernen Sie die foreach loop

Ich hoffe, das Ihnen helfen kann.

+0

Hey. Es hat in Übereinstimmung mit der obigen Antwort funktioniert. Danke für deine Zeit und antworte! – Goku1989

+0

Wenn diese oder die andere Antwort (oder beide) Ihnen geholfen haben, können Sie sie updaten. Happy Coding! – ganchito55