代码之家  ›  专栏  ›  技术社区  ›  Budda

Silverlight4:如何显示自定义控件列表(不按列表顺序)

  •  0
  • Budda  · 技术社区  · 15 年前

    有以下对象:

    • “FieldItem”自定义控件;
    • '字段'-。。。XAML对象,它将包含十几个字段项;
    • “FieldItem”控件的位置取决于绑定到控件的数据实体参数(X和Y);
    • items-observeCollection-包含数据的集合。

    问:我应该把什么样的对象放在画布中才能让我的FieldItems中的每一项都显示在画布中?

    我计划使用ListView。。。但是。。。无法想象如何改变列表视图项的位置。。。

    欢迎有任何想法!

    谢谢。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Yuval Peled    15 年前

    您可以有一个简单的ItemsControl。 ItemsControl只是一个项目容器。 ItemsPanel应该设置为画布。每个项目的数据模板应该是“FieldItem”控件。

    <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

    推荐文章