C# 如何绑定到对象列表
我的要求是需要将用户控件绑定到对象的属性,该对象的列表包含在不同的对象中,第二个对象的列表设置为ItemsSource 范例C# 如何绑定到对象列表,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我的要求是需要将用户控件绑定到对象的属性,该对象的列表包含在不同的对象中,第二个对象的列表设置为ItemsSource 范例 class A { public string Name { get; set; } } class B { public List<A> aObjectList; } List<B> bObjectsList = new List<B>(); userControl.Item
class A
{
public string Name
{
get; set;
}
}
class B
{
public List<A> aObjectList;
}
List<B> bObjectsList = new List<B>();
userControl.ItemSource = bObjectsList;
userControl.Content = new Binding("Name");
A类
{
公共字符串名
{
获得;设置;
}
}
B类
{
公共列表对象列表;
}
List bObjectsList=新列表();
userControl.ItemSource=bObjectsList;
userControl.Content=新绑定(“名称”);
如何执行上述操作?首先,如果您希望允许GUI在发生更改时进行自我更新,则应使用
NotifyCollectionChanged
的实现,例如observeCollection
XAML将如下所示:
<ItemsControl Name="userControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding aObjectsList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
一个好主意是查看MVVM模式。这将提供一个更结构化的解决方案,允许修改通知等内容
首先,如果您希望允许GUI在某些内容发生更改时进行自我更新,则应使用
NotifyCollectionChanged
的实现,例如observeCollection
XAML将如下所示:
<ItemsControl Name="userControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding aObjectsList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
一个好主意是查看MVVM模式。这将提供一个更结构化的解决方案,允许修改通知等内容
这不是很清楚,但我想这就是你要问的。你一定会
bObjectsList[index].aObjectList
在主细节中,使用以下语法
ItemsSource="{binding ElementName=cbbObjectsList path=SelectedItem.aObjectList}"
这不是很清楚,但我想这就是你要问的。你一定会
bObjectsList[index].aObjectList
在主细节中,使用以下语法
ItemsSource="{binding ElementName=cbbObjectsList path=SelectedItem.aObjectList}"
似乎对你所要做的事情有很多解释。如果要将列表展平,请使用
List bObjectsList=new List();
userControl.ItemSource=bObjectsList.SelectMany(b=>b.aObjectList);
userControl.Content=新绑定(“名称”);
如果A/B的内容正在更改,您可能会对其使用A/B,并做出相应的反应。似乎对您尝试执行的操作有很多解释。如果要将列表展平,请使用
List bObjectsList=new List();
userControl.ItemSource=bObjectsList.SelectMany(b=>b.aObjectList);
userControl.Content=新绑定(“名称”);
如果A/B的内容正在更改,您可能会对其使用A/B并做出相应的反应。是否要将列表展平?(创建一个
A
项目列表)是否要展平该列表?(创建一个A
项目列表)