我有一个这样定义的类:
public class CustomClass
{
string Name;
int Age;
Usercontrol usercontrol;
}
其中 Usercontrol 是我想在 WrapPanel 中插入的可视元素。
CustomClass 组织在一个静态的 ObservableCollection 中。
public static class CollectionClass
{
public static ObservableCollection<CustomClass> MyCollection = new ObservableCollection<CustomClass>();
}
我希望将集合中 CustomClass 的 usercontrol 属性绑定到 WrapPanel 中进行可视化,因此我的可视元素显示的顺序与集合中的元素相同。
现在我正在通过代码手动填充 WrapPanel,但我认为必须有一种方法可以通过数据绑定快速轻松地完成它。我正在尝试使用以这种方式定义的 ItemsControl 来做到这一点:
<ItemsControl Name="SensorMenuWrap" ItemsSource="{Binding }">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
但我不知道如何让魔法发生。
编辑:
我尝试了 ChrisO 提出的解决方案,实现方式如下:
1 - 我将收藏设置为属性
2 - 我将 UserControl 设为属性
3 - 我从代码中设置 DataContex:
SensorMenuWrap.Datacontext = CollectionClass.MyCollection
4 - 绑定:
<ItemsControl Name="SensorMenuWrap" ItemsSource="{Binding }">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl Content="{Binding usercontrol}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
现在我可以可视化集合的第一个元素。如果第一个元素发生变化,我将可视化新的第一个元素。如何可视化整个集合?