Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向stackpanel添加自定义项_C#_Visual Studio 2012_Windows Phone 8_Custom Controls_Itemscontrol - Fatal编程技术网

C# 向stackpanel添加自定义项

C# 向stackpanel添加自定义项,c#,visual-studio-2012,windows-phone-8,custom-controls,itemscontrol,C#,Visual Studio 2012,Windows Phone 8,Custom Controls,Itemscontrol,我正在进行一个项目(针对Windows Phone 8,使用Visual Studio 2012和C#),其中我想显示一些项目,每个项目都有: 一幅画 头衔 描述 能够被点击(以便我可以导航到某个页面) 所以我想我可以用stackpanel来做。但我不确定如何添加具有上述属性的项,以及如何从XAML添加这些项。我厌倦了通过stackpanel中的ItemsControl添加项目,但我不确定如何添加更复杂的项目,如我想要的项目。最好的方法是使用ListBox或LongListSelector,而不

我正在进行一个项目(针对Windows Phone 8,使用Visual Studio 2012和C#),其中我想显示一些项目,每个项目都有:

  • 一幅画
  • 头衔
  • 描述
  • 能够被点击(以便我可以导航到某个页面)

  • 所以我想我可以用stackpanel来做。但我不确定如何添加具有上述属性的项,以及如何从XAML添加这些项。我厌倦了通过stackpanel中的ItemsControl添加项目,但我不确定如何添加更复杂的项目,如我想要的项目。

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

    • 数据将列表绑定到控件本身,该控件将自动处理从控件添加/删除项的操作
    • 使用ListBox的ItemTemplate属性定义每个控件的视图
    首先,在代码隐藏/ViewModel/what have中,您需要创建一个可观察的对象集合来显示。ObservableCollection将让控件知道在添加、删除项等情况下要更新

    public ObservableCollection<T> foo = new ObservableCollection<T>();
    
    公共ObservableCollection foo=新ObservableCollection(); 在XAML中,您需要将此ObservableCollection数据绑定到您创建的列表框:

    <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>
    
    
    

    我强烈推荐阅读,尤其是“将控件绑定到对象集合”和后面关于DataTemplates的部分。:)

    您需要自定义,在这里您可以为图片、标题等指定布局。好的,让我试试看是否可以找到相关内容:)您只需将类(视图模型)添加到项目或绑定集合中,它的视图是从
    DataTemplate
    创建的。我没有任何包含项目的类。我只想在我的Itemscontrol中手动添加项,并能够从XAMLI更改图片和文本。我想你的意思是你非常想创建一个usercontrol;)虽然我使用了itemscontrol而不是listbox或longlistselector,但我也会尝试这些