WPF世界的新手,需要实现动态列视图。
我可以在概念上可视化这个想法,但我无法将其变成一个实现。
StackPanel - > ListView - >文本框。
整个想法是将配置文件显示为所选实体的列,基于所选实体,配置文件可以更改,因此我希望将配置文件显示为动态列。 个人资料将有54个项目,可以垂直表示为文本框。
因此,如果我有一个代表配置文件项目(54项)的可观察集合,则绑定到垂直加载到列表视图中的用户控件和用户控件时。
因此,添加的每个配置文件将在堆栈面板上水平添加,因此我可以将所有配置文件作为动态列。
关于我如何通过xaml实现这一点的任何想法或指示,以及我的模型对象应该如何?
希望我能正确理解我的想法:)
**添加了一个非常快速的手绘草图。
列col1..col2 .....理想情况下是一个集合,其中包含要在列中的矩形框表示的文本框中显示的数据。
每个柱子都可以变化。
所以我从我的服务中获得的数据最理想的是Collection of Collection。
所以第一个集合包含Col1..Col2..Col3 ... items ...
起初认为这听起来非常像网格,但数据模型不适合网格显示样式。
每个Col1..col2..col3都在第一个集合中作为另一个集合。
答案 0 :(得分:0)
我已经设法解决了上面要求的数据布局和显示问题,感谢SO和各种答案的混合搭配让我得到了这个。
因此,下面的XAML会水平创建任意数量的列表项。
<Grid x:Name="LayoutRoot" Background="White">
<StackPanel Height="301" HorizontalAlignment="Left" Margin="37,42,0,0" Name="stackPanel1"
VerticalAlignment="Top" Width="795">
<StackPanel.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="White" Offset="1" />
<GradientStop Color="Silver" Offset="0.006" />
</LinearGradientBrush>
</StackPanel.Background>
<ItemsControl x:Name="tStack" Grid.Column="0" ItemsSource="{Binding Profiles}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Left">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Button Grid.Row="0" Content="{Binding Name}"/>
<ListBox Grid.Row="1" Height="209" Name="listBox1" Width="98" HorizontalAlignment="Left"
ItemsSource="{Binding Path=Profile, Mode=TwoWay}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Grid>