gpt4 book ai didi

c# - 是否可以绑定(bind)对象列表?

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

我有以下类(class):

public class MyClass
{
public MyClass()
{
OtherClass = new List<OtherClass>();
}

public List<OtherClass> OtherClass { get; set; }
}

其他类包含:

public class OtherClass 
{
public OtherClass ()
{
}

public string Name { get; set; }
}

和以下 xaml MyView:

<DataTemplate DataType="{x:Type Framework:MyClass}">
<StackPanel>
<Label FontSize="20" Content="{Binding Path=OtherClass.Name}" />
</StackPanel>
</DataTemplate>

MyWindow 中引用 MyView:

<TabItem Header="My Class">
<Views:MyView DataContext="{Binding Path=MyClass}" />
</TabItem>

我看过其他绑定(bind)的例子nested properties这表明 Binding Path 这种方式(即 OtherClass.Name)适用于单个对象。但是,我绑定(bind)的是对象列表而不是单个对象(在我的示例中,是 OtherClass 的列表)。

是否可以绑定(bind)对象列表?

最佳答案

如果你想为 MyClass 创建 DataTemplate 那么你需要使用某种形式的 ItemsControl 来显示 OtherClass 列出属性

<DataTemplate DataType="{x:Type Framework:MyClass}">
<ItemsControl ItemsSource="{Binding OtherClass}" DisplayMemberPath="Name"/>
</DataTemplate>

此外,OtherClass.Name 必须是一个公共(public)属性,而不是像现在这样私有(private)

public class OtherClass 
{
public OtherClass ()
{
}

public string Name { get; set; }
}

编辑

DisplayMemberPath 是显示单个属性的最简单方法,但如果您想显示 OtherClass 类中的多个属性,或更改其格式,则需要定义ItemsControl.ItemTemplate 并告诉 ItemsControl 如何显示每个项目

<ItemsControl ItemsSource="{Binding OtherClass}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}"/>
<!-- more properties that you want to display -->
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

关于c# - 是否可以绑定(bind)对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23302229/

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