2013-06-03 95 views
6

我不得不尋求幫助,但我無法自己弄清楚。 我正在研究WPF-XAML桌面應用程序,其中GUI主要是動態生成的。WPF XAML WrapPanel列表框項目連續

我的查詢關於WrapPanel與ListBox項目的樣式。

請找到我的用戶的一段代碼(的.xaml):

<DockPanel x:Name="xResultPanel"> 
    <ListView x:Name="bResultPanel" ItemsSource="{Binding ResultList, UpdateSourceTrigger=PropertyChanged}"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
     <Expander Header="{Binding GroupName}" Style="{DynamicResource FeatureExpander2}"> 
      <WrapPanel ItemWidth="140" Orientation="Horizontal"> 
      <ListBox x:Name="ListOfTiles" ItemsSource="{Binding VideoSamples}"> 
       <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Width="120" Margin="10" HorizontalAlignment="Left"> 
        <Image /> 
        <TextBlock /> 
        </StackPanel 
       </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 
      </WrapPanel> 
     </Expander> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
    </ListView> 
</DockPanel> 

上面的代碼返回ListBox中的項目連續呈現,而是在新的生產線的每個項目。 我試着爲WrapPanel和ListBox設置MinWidth,Width等,但沒有結果。

在此先感謝所有相關提示,以便如何強制WrapPanel水平填充其內容。

回答

11

問題是您的WrapPanel只有一個孩子:ListBox。這意味着該佈局由ListBoxItemsPanel模板完成。

試試這個:

<Expander Header="{Binding GroupName}" Style="{DynamicResource FeatureExpander2}"> 
     <ListBox x:Name="ListOfTiles" ItemsSource="{Binding VideoSamples}"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
      <StackPanel Width="120" Margin="10" HorizontalAlignment="Left"> 
       <Image /> 
       <TextBlock /> 
      </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
     <ListBox.ItemsPanel> 
      <ItemsPanelTemplate> 
      <WrapPanel /> 
      </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> 
     </ListBox> 
    </Expander> 
+0

太感謝了,牛! 它解決了我的問題:) – zyjespox