18 c# data-binding wpf stackpanel
我是WPF编程的初学者,来自.NET 2.0 C#.
我试图制作一个水平StackPanel,应填充数据库中的表中的数据.问题是我希望它显示带有下表中某些文本的图像,然后水平堆叠这两个项目.
这里有一些伪代码来显示我想要做的事情:
<StackPanel Orientation="horizontal" ItemsSource="{Binding Path=myTable}">
<StackPanel>
<Image Source="User.png"/>
<Label HorizontalAlignment="Center" Content="{Binding Path=UserName}"></Label>
</StackPanel>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
我根本无法想象如何做到这一点.
Sco*_*ott 30
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>
Run Code Online (Sandbox Code Playgroud)
你肯定需要一个ItemsControl(或一些派生)来绑定你的源.然后你可以通过设置它的项目面板来改变方向(我相信默认情况下是一个具有垂直方向的VirtualizingStackPanel),所以只需将其设置为具有水平方向的VirtualizingStackPanel.然后,您可以将每个项目的ItemsTemplate设置为您想要的布局(图像堆叠在从数据库绑定的文本顶部).
Jul*_*ain 26
基本上,您希望使用能够显示对象枚举的控件.能够这样做的控制是类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>
Run Code Online (Sandbox Code Playgroud)
在你的Window/ Page/ UserControl:
<ItemsControl x:Name="UserList" ItemTemplate="{StaticResource UserDataTemplate}" />
Run Code Online (Sandbox Code Playgroud)
在你的代码背后:
UserList.ItemsSource = ... // here, an enumeration of your Users, fetched from your db
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34772 次 |
| 最近记录: |