2016-07-26 52 views
0

我想我的自定義構建ListBox顯示下一行的項目,如果它們的大小超過其父控件的可用寬度。水平自定義列表框

以下是我的XAML用於此目的。

<materialDesign:Card> 
      <StackPanel> 
       <TextBlock FontWeight="DemiBold" FontSize="30">Schedule</TextBlock> 
       <ListBox ItemsSource="{Binding Schedule, Source={StaticResource dc}}"> 
        <ListBox.ItemsPanel> 
         <ItemsPanelTemplate> 
          <StackPanel Orientation="Horizontal" /> 
         </ItemsPanelTemplate> 
        </ListBox.ItemsPanel> 
        <ListBox.ItemTemplate> 
         <DataTemplate> 
          <ListBoxItem> 
           <StackPanel Orientation="Horizontal"> 
            <StackPanel Orientation="Horizontal"> 
             <TextBlock>Day:</TextBlock> 
             <TextBlock Text="{Binding Key, Mode=OneWay}" /> 
            </StackPanel> 
            <materialDesign:TimePicker materialDesign:HintAssist.Hint="Time In" SelectedTime="{Binding Value.TimeIn}" /> 

            <materialDesign:TimePicker materialDesign:HintAssist.Hint="Time Out" SelectedTime="{Binding Value.TimeOut}" /> 
           </StackPanel> 
          </ListBoxItem> 
         </DataTemplate> 
        </ListBox.ItemTemplate> 
       </ListBox> 
      </StackPanel> 
     </materialDesign:Card> 

以下爲上述XAML輸出

Output of the Above writte

回答

1

您應該使用WrapPanel代替StackPanel,然後。

0

As H.B.說,ItemPanel控制你應該使用的是一個WrapPanel,讓你實現你想要的(當沒有足夠的空間控制,它會創建一個新的行)。

這是一個例子:

  <ListBox.ItemsPanel> 
       <ItemsPanelTemplate> 
        <WrapPanel Orientation="Horizontal"/> 
       </ItemsPanelTemplate> 
      </ListBox.ItemsPanel>