我希望我的自定义构建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的输出
答案 0 :(得分:1)
您应该使用WrapPanel
代替StackPanel
,然后使用。
答案 1 :(得分:0)
正如 HB 所说,你应该使用的 ItemPanel 控件是一个 WrapPanel ,让你实现你想要的(当没有&#39时) ; t足够的空间供您控制,它会创建一个新行。)
这是一个例子:
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>