[英]Dynamically create rows and columns
抱歉,这是一个菜鸟问题。 我刚刚开始学习WPF,所以希望你们不要介意。 但是,是否有可能通过xaml为每行动态创建两列,还是必须在后端代码(viewmodel,.cs)中完成? 现在,通过绑定数据源,我只有一长串物品。 例如,datasource =“ {binding path = House.Item}” ... Item是一个集合,它在执行存储过程调用时存储标签和值。 例如:label =“颜色”,值=“白色”。
我目前有:
颜色<-标签
白色<-文本块中的值
窗口<-标签
乙烯基<-文本块中的值...等
我希望每行的结果为2列(不正确显示):
颜色| >>>窗口
白| >>> Vinly
门| >>>地下室
木| >>>完成
我想要实现此目的的原因是,这样我就可以消除水平滚动,以防万一项目真的很长。 任何意见将是有益的。 非常感谢您。
更新:
<ListBox.Resources>
<DataTemplate DataType="{x:Type Models:HouseDetail}" >
<Views:HouseView>
</DataTemplate>
<ListBox.Resources>
这几乎就是我的数据生成方式,这再次给了我类似“从上到下”的流程,而我希望它显示“从左到右”。 例如:1 2 3 <-(我想要)而不是
1个
2
3
如果要显示列表,则应查看一个列表框控件。 对于列表中的每个项目,您可以描述如何使用ItemTemplate对项目进行布局。 有关使用ItemTemplates的更多信息,请参见ItemTemplate文档 。
有一个代表您的列表项的对象(例如,House类)。 创建列表项的ObservableCollection并将Listbox绑定到ObservableCollection。 然后,在XAML中,描述每个House项的布局及其外观。 这样的事情应该起作用:
码
public class House
{
public string Color { get; set; }
public string Material { get;set; }
public string Window { get; set; }
}
public class ViewModel
{
public ObservableCollection<House> Houses { get; set; }
}
XAML:
<!-- DataContext should be set to an instance of ViewModel -->
<ListBox ItemsSource="{Binding Houses}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<!-- I am just using StackPanels here, but you can use any layout control you want to describe how you want each list item to look -->
<StackPanel Orientation=Horizontal>
<TextBlock Text="House Color:"/>
<TextBlock Text="{Binding Path=Color}"/>
</StackPanel>
<StackPanel Orientation=Horizontal>
<TextBlock Text="House Material:"/>
<TextBlock Text="{Binding Path=Material}"/>
</StackPanel>
<!-- Add more controls to show more information -->
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
抱歉,我没有编译器,所以我不确定是否可以编译,但是应该很接近。
我不确定我是否正确理解了该问题,但我认为您可能正在寻找Stackpanel。
在控件的每一行中,您都可以拥有一个包含2个文本块的堆栈面板。 然后,您可以将每个值直接绑定到文本块。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.