你可以有一個簡單的ItemsControl。 ItemsControl只是一個物品的容器。 ItemsPanel應設置爲您的畫布。每個項目的數據模板應該是'FieldItem'控件。 在您的viewmodel中公開一個名爲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
尤瓦,你可以還請說明:我的'FieldItemViewModel'類的哪個屬性應該包含'X'和'Y'值?這應該是一個普通的'X'和'Y'屬性,或者我需要'Position'屬性,它本身具有'X'和'Y'?先謝謝你。 – Budda 2010-08-18 23:56:12
Yuval,謝謝......現在我看到,「Position.X/Y」屬性在綁定到項目的對象內部查看。謝謝! – Budda 2010-08-23 03:26:24