C# ItemsControl don';不要显示我的物品
我正在尝试使用ItemsControl和CompositeCollection在画布中显示不同的形状,但绑定有一些问题。现在我在画布上只看到文本“(Collection)”,这让我觉得我正在尝试显示一个集合 我不知道我的资源是否有问题,或者我只是在这里想错了(比如试图显示整个集合而不是每个项目),但如果有一些指针,我会很高兴 如果我将“ItemsControl.Resources”更改为“ItemsControl.itemstemplate”,它将显示列表中的第一个项目,并且我只能使用一个DataTemplate,因此这并不好 代码如下所示,XAML:C# ItemsControl don';不要显示我的物品,c#,wpf,C#,Wpf,我正在尝试使用ItemsControl和CompositeCollection在画布中显示不同的形状,但绑定有一些问题。现在我在画布上只看到文本“(Collection)”,这让我觉得我正在尝试显示一个集合 我不知道我的资源是否有问题,或者我只是在这里想错了(比如试图显示整个集合而不是每个项目),但如果有一些指针,我会很高兴 如果我将“ItemsControl.Resources”更改为“ItemsControl.itemstemplate”,它将显示列表中的第一个项目,并且我只能使用一个Dat
<Grid>
<ItemsControl ItemsSource="{Binding GraphData}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.Resources>
<DataTemplate DataType="model:Axle">
<Line X1="{Binding StartX}" X2="{Binding EndX}" Y1="{Binding StartY}" Y2="{Binding EndY}" Stroke="Black" StrokeThickness="2"/>
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
</Grid>
在我的ViewModel中:
public class GraphViewModel : ViewModelBase
{
public ObservableCollection<Axle> Axles { get; set; }
public CompositeCollection GraphData { get; set; }
public GraphViewModel()
{
Axles = new ObservableCollection<Axle>();
GraphData = new CompositeCollection { Axles };
InitializeAxles();
}
private void InitializeAxles()
{
//X-axle
Axles.Add(new Axle
{
StartX = 50,
StartY = 530,
EndX = 530,
EndY = 530
});
//Y-axle
Axles.Add(new Axle
{
StartX = 50,
StartY = 0,
EndX = 50,
EndY = 530
});
}
}
public类GraphViewModel:ViewModelBase
{
公共可观测集合{get;set;}
公共CompositeCollection GraphData{get;set;}
公共图形模型()
{
轴=新的可观测集合();
GraphData=新的复合集合{axes};
初始化axles();
}
私有无效初始化AXES()
{
//X轴
轴。添加(新轴
{
StartX=50,
StartY=530,
EndX=530,
EndY=530
});
//Y轴
轴。添加(新轴
{
StartX=50,
StartY=0,
EndX=50,
EndY=530
});
}
}
您不能直接将集合添加到CompositeCollection,但必须将其包装到CollectionContainer中:
GraphData = new CompositeCollection {
new CollectionContainer { Collection = Axles }
};
是的,因为集合属性最初为null,所以您需要将项包装在一个显式元素中,如上图所示,该元素实例化集合。实际上,这不起作用,当我这样做并使用ItemControl时。参考资料我只得到一个小文本(整个命名空间+类名)。你知道为什么吗?