gpt4 book ai didi

c# - Wpf 将自定义类与列表绑定(bind)到 ListBox

转载 作者:太空宇宙 更新时间:2023-11-03 19:57:25 30 4
gpt4 key购买 nike

我是 WPF 的新手,正在尝试使用绑定(bind)。现在我将自定义对象列表绑定(bind)到 ListBox,如下所示:

public class Foo
{
public string Name { get; set; }
}

这是我的 C# 代码:

public List<Foo> lst = new List<Foo>();

public MainWindow()
{
Bar bar = new Bar();

lst.Add(new Foo { Name = "111" });
lst.Add(new Foo { Name = "222" });
lst.Add(new Foo { Name = "333" });
lst.Add(new Foo { Name = "444" });
lst.Add(new Foo { Name = "555" });

this.DataContext = lst;
InitializeComponent();
}

还有 XAML:

<ListBox Height="139" HorizontalAlignment="Left" Margin="44,102,0,0" Name="listBox1" VerticalAlignment="Top" Width="350" 
ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"></TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

这很好,但我想绑定(bind)一个包含 List 作为字段的类,所以我的 C# 代码如下所示:

public class Foo
{
public string Name { get; set; }
}

public class Bar
{
private List<Foo> lst;

public List<Foo> Lst
{
get;
set;
}

public Bar()
{
lst = new List<Foo>();
lst.Add(new Foo { Name = "111" });
lst.Add(new Foo { Name = "222" });
lst.Add(new Foo { Name = "333" });
lst.Add(new Foo { Name = "444" });
lst.Add(new Foo { Name = "555" });
}
}

还有

Bar bar=new Bar();
this.DataContext=bar;

当我这样做时,没有任何效果。所以我不知道如何将 bar.Lst 绑定(bind)到 ListBox。谁能给我解释一下?

最佳答案

您必须对 Bar 类进行少量修改。

public class Bar
{
private List<Foo> lst;

public List<Foo> Lst
{
get { return lst;}
}

public Bar()
{
lst = new List<Foo>();
lst.Add(new Foo { Name = "111" });
lst.Add(new Foo { Name = "222" });
lst.Add(new Foo { Name = "333" });
lst.Add(new Foo { Name = "444" });
lst.Add(new Foo { Name = "555" });
}
}

还有你的 Xaml。

<ListBox Height="139" HorizontalAlignment="Left" Margin="44,102,0,0" Name="listBox1" VerticalAlignment="Top" Width="350" 
ItemsSource="{Binding Lst}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"></TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

关于c# - Wpf 将自定义类与列表绑定(bind)到 ListBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32064348/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com