有以下对象:
问题:为了让我的FieldItems的每个项目都显示在Canvas中,我应该放入什么样的对象?
我打算使用ListView ...但是......无法想象如何更改列表视图项的位置......
欢迎任何想法!
感谢。
答案 0 :(得分:1)
您可以拥有一个简单的ItemsControl。 ItemsControl只是一个项目的容器。 ItemsPanel应设置为您的画布。每个项目的数据模板应该是'FieldItem'控件。 在您的viewmodel中公开一个名为Items的属性,该属性将是items数据的集合。 类似的东西:
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<FieldItem />
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
Silverlight没有ItemContainerStyle,但您可以在代码中设置它:
public class MyItemsControl : ItemsControl
{
protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
{
FrameworkElement contentitem = element as FrameworkElement;
Binding leftBinding = new Binding("Position.X");
Binding topBinding = new Binding("Position.Y");
contentitem.SetBinding(Canvas.LeftProperty, leftBinding);
contentitem.SetBinding(Canvas.TopProperty, topBinding);
base.PrepareContainerForItemOverride(element, item);
}
}
从这里采取:http://forums.silverlight.net/forums/p/29753/96429.aspx