我是一个来自.NET 2.0 C#的WPF编程初学者。
我正在尝试制作一个水平的StackPanel
,它应该由数据库中的表中的数据填充。问题是,我想让它显示一个图像,其中包含下表中的一些文本,然后水平堆叠这两个项目。
下面是一些伪代码来显示我想要做的事情:
<StackPanel Orientation="horizontal" ItemsSource="{Binding Path=myTable}">
<StackPanel>
<Image Source="User.png"/>
<Label HorizontalAlignment="Center" Content="{Binding Path=UserName}"></Label>
</StackPanel>
</StackPanel>
我就是想不出该怎么做。
发布于 2009-10-06 14:18:35
Julien的答案对于您的书面描述是正确的,但是,查看您的XAML,您似乎正在寻找类似以下内容的内容:
<DataTemplate x:Key="UserDataTemplate">
<StackPanel>
<Image Source="User.png"/>
<Label HorizontalAlignment="Center" Content="{Binding Path=UserName}" />
</StackPanel>
</DataTemplate>
<ItemsControl x:Name="UserList" ItemTemplate="{StaticResource UserDataTemplate}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
您肯定需要一个ItemsControl (或其派生)来绑定您的源代码。然后你可以通过设置它的items面板来改变方向(我相信这是一个默认的垂直方向的VirtualizingStackPanel ),所以只要把它设置成一个水平方向的VirtualizingStackPanel即可。然后,您可以将每个项目的ItemsTemplate设置为所需的布局(堆叠在从数据库绑定的文本之上的图像)。
发布于 2009-10-06 13:20:32
基本上,您希望使用能够显示对象枚举的控件。能够做到这一点的控件是类ItemsControl
及其所有子类(Selector
、ListBox
、ListView
等)。
将此控件的ItemsSource
属性绑定到所需的对象列表,此处是从数据库获取的用户列表。将控件的ItemTemplate
设置为将用于显示列表中每一项的DataTemplate
。
示例代码:
在Resources
部分(例如Window.Resources
)中:
<DataTemplate x:Key="UserDataTemplate">
<StackPanel Orientation="Horizontal">
<Image Source="User.png"/>
<Label HorizontalAlignment="Center" Content="{Binding Path=UserName}" />
</StackPanel>
</DataTemplate>
在你的Window
/Page
/UserControl
中
<ItemsControl x:Name="UserList" ItemTemplate="{StaticResource UserDataTemplate}" />
在你的代码中:
UserList.ItemsSource = ... // here, an enumeration of your Users, fetched from your db
https://stackoverflow.com/questions/1525464
复制相似问题