2012-08-06 88 views
0

新来的WPF世界,需要实现一个动态的列视图。将一个listview绑定到一个集合....动态一个

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

StackPanel - > ListView - >文本框。

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

所以,如果我有一个可观察的集合,表示配置文件项目(54项),当绑定到一个usercontrol和用户控件加载到列表视图垂直。

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

关于如何通过xaml实现这一点的任何想法或指针,以及我的模型对象应该如何看起来像?

希望我已经把我的想法跨越正确:)

**需要添加什么的非常快的手草图。

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

每个柱子都可以变化。

所以我从服务中获得的数据最理想的是一个集合集合。

所以第一个集合包含Col1..Col2..Col3 ... ...物品

起初以为这听起来非常像一个网格,但数据模型不适合网格显示风格。

Col1..col2..col3中的每一个都是第一个集合中的另一个集合。 enter image description here

+0

这里有点混淆,请多说明一下,或者举个例子,那太棒了! – S3ddi9 2012-08-06 20:48:30

+0

从描述中可以看出这有点难,可能是一个快速的模拟线框或其他东西来帮助直观地传达你要求的内容会有帮助吗?否则,只是从我认为的东西出发,我会说你想要一个ItemsControl或一个DataGrid。尽管我会毫不犹豫地提供一个没有更好的视觉效果的例子。 – 2012-08-06 20:50:12

+0

感谢您的评论,将模拟了一个屏幕,并添加了一个更好的理解,将尽快完成 – Kans 2012-08-08 19:10:18

回答

0

我已经设法解决了上述要求的数据布局和显示,这得益于SO和各种答案的混合搭配让我有了这个。

因此,下面的XAML水平地创建任意数量的listitems。

<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> 
相关问题