2013-06-03 36 views
6

Tôi buộc phải yêu cầu trợ giúp, trong khi tôi không thể tự mình tìm ra. Tôi đang làm việc trên ứng dụng máy tính để bàn WPF-XAML, trong đó GUI chủ yếu được tạo động.WPF XAML WrapPanel ListBox các mục trong một hàng

Truy vấn của tôi liên quan đến kiểu dáng của WrapPanel với các mục ListBox.

hãy tìm một đoạn mã từ usercontrol của tôi (.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> 

Trên mã trả về mục ListBox giới không liên tiếp, nhưng mỗi mục trong dòng mới. Tôi đã cố gắng đặt MinWidth, Chiều rộng, vv cho WrapPanel và ListBox, nhưng không có kết quả.

Cảm ơn trước cho tất cả các mẹo liên quan cách buộc WrapPanel lấp đầy nội dung theo chiều ngang.

Trả lời

11

Vấn đề là WrapPanel chỉ có một con: ListBox. Điều này có nghĩa là bố cục được thực hiện theo mẫu ItemsPanel của ListBox.

Hãy thử điều này thay vì:

<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

Cảm ơn rất nhiều, Daniel! Nó đã giải quyết được vấn đề của tôi :) – zyjespox

Các vấn đề liên quan