我有使用数据绑定在画布中显示的项目列表。如何通过绑定在画布中显示项目
ItemsToShowInCanvas = new ObservableCollection<ItemDetail>
{
new ItemDetail {Text = "ABC", Top = 10, Left = 200},
new ItemDetail {Text = "DEF", Top = 100, Left = 300},
new ItemDetail {Text = "PQR", Top = 50, Left = 150}
};
ItemDetail是汽车性能的简单类的文字,top和left值
public class ItemDetail
{
public string Text { get; set; }
public double Top { get; set; }
public double Left { get; set; }
}
当我数据绑定的物品,但会出现在画布上。但是这些项目不会出现在使用Top和Left属性提及的位置上。
<Canvas>
<ItemsControl ItemsSource="{Binding Path=ItemsToShowInCanvas}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Text}" Canvas.Top="{Binding Path=Top}" Canvas.Left="{Binding Path=Left}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Canvas>
的ItemsControl的
TextBlock
使用StackPanel的默认itemspanel。您添加的文本块实际上是添加到堆叠面板,但不添加到画布。 ItemsControl正在添加到画布上。尝试更改项目面板到画布 – Bathineni感谢您的答案bathineni。我试图把ItemsPanel作为Canvas,但它没有工作。项目开始显示一个在另一个上。添加ItemContainerStyle工作。的 –
可能重复[WPF:是否有可能在XAML画布的儿童属性绑定?](http://stackoverflow.com/questions/889825/wpf-is-it-possible-to-bind-a-canvass-children -property-in-xaml) –