将自定义项添加到stackpanel

时间:2015-01-24 19:11:15

标签: c# visual-studio-2012 windows-phone-8 custom-controls itemscontrol

我正在开发一个项目(适用于带有C#的Visual Studio 2012的Windows Phone 8),我想在其中显示一些项目:

  1. 图片
  2. 标题
  3. 描述
  4. 可以点击(以便我可以导航到某个页面)
  5. 所以我认为我可以使用stackpanel做到这一点。但我不确定如何添加具有上述属性的项目,以及能够从XAML添加这些项目。我累了通过stackpanel中的ItemsControl添加项目,但我不确定如何添加更复杂的项目,如我想要的。

1 个答案:

答案 0 :(得分:2)

最好的方法是使用ListBox或LongListSelector而不是StackPanel。然后你可以:

  • 数据将列表绑定到控件本身,控件将自动处理从控件添加/删除项目
  • 使用ListBox的ItemTemplate属性
  • 定义每个控件的视图

首先,在您的代码隐藏/ ViewModel / what-have-you中,您需要创建要显示的ObservableCollection对象。在添加,删除项目等的情况下,ObservableCollection将让控件知道更新

public ObservableCollection<T> foo = new ObservableCollection<T>();

在XAML中,您需要将此ObservableCollection数据绑定到您创建的ListBox:

<ListBox x:Name="ListBox" ItemsSource="{Binding foo}" />

最后,您可以像这样定义ListBox的ItemTemplate:

<ListBox x:Name="ListBox" ItemsSource="{Binding foo}" >
   <ListBox.ItemTemplate>
      <DataTemplate>
         <StackPanel Orientation="Horizontal" Margin="2">
            <TextBlock Text="{Binding Title}" />
            <TextBlock Text="{Binding Description}" />
            <Image Source="{Binding Image}" />
         </StackPanel>
      </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

我强烈建议阅读this guide,特别是“将控件绑定到对象集合”以及DataTemplates之后的部分。 :)