2012-08-06 91 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> 
相關問題