0

WPF 世界的新手,需要实现动态列视图。

我可以在概念上可视化这个想法,但无法将其转化为实现。

StackPanel -> ListView -> 文本框。

整个想法是将配置文件显示为所选实体的列,根据所选实体,配置文件可以更改,因此我想将配置文件显示为动态列。一个配置文件将有 54 个项目,可以垂直表示为一个文本框。

因此,如果我有一个表示配置文件项目(54 个项目)的可观察集合,当绑定到用户控件并且用户控件垂直加载到列表视图中时。

因此,添加的每个配置文件都将水平添加到堆栈面板上,因此我可以将所有配置文件作为动态列。

关于如何通过 xaml 实现它以及我的模型对象应该是什么样子的任何想法或指示?

希望我已经正确表达了我的想法:)

** 添加所需内容的非常快速的手绘草图。

列 col1..col2..... 理想情况下是一个集合,该集合具有要显示在由列内的矩形框表示的文本框中的数据。

每一列都可以变化。

因此,理想情况下,我从服务中获得的数据是集合的集合。

所以第一个集合包含 Col1..Col2..Col3... 项目...

起初以为这听起来很像网格,但数据模型不适合网格显示样式。

Col1..col2..col3 中的每一个都作为另一个集合在第一个集合中。在此处输入图像描述

4

1 回答 1

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>
于 2012-08-13T15:39:39.227 回答