XAML
<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>
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();
}
}
}
}
我遇到了将数据绑定到列表框的问题,如XAML和代码隐藏内容所示。 我没有任何运气就尝试了以前的答案,做了我的研究,但显然我错过了一些东西,或者有些东西我不太了解。 名称建议的Itemsource应该绑定到我的数据所在的来源。在这种情况下,源代码将是我的类硬件,它包含节点,日期,集线器等的数据。 在文本块中,我手动绑定这些属性并显示值。 但这不起作用。 附:我的数据库表已填充。
答案 0 :(得分:0)
此代码似乎错误
foreach(Hardware i in x )
{
HardwareList.ItemsSource = i.Hubs.ToString();
}
然后,用于绑定的ItemsSource必须是一个集合(List
,ObservableCollecion
,IEnumerable<>
...)。
尝试HardwareList.ItemsSource = x;
并移除foreach loop
我希望这可以帮到你。
答案 1 :(得分:0)
那是因为ItemsSource是一个IEnumerable,你可以为它分配硬件本身列表。所以你的代码应该是这样的:
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);