我使用ListBox
控件在我的XAML中创建了一个面包屑。它工作得很好。但是,当我尝试显示添加太多项目时,自然它只显示其中的一些。我想以某种方式隐藏左手物品,直到右侧元素可见。理想情况下,它也应该留下一些自由空间(右侧)。我怎么能这样做?
<ListBox Height="80" HorizontalAlignment="Stretch" x:Name="breadcrumb"
MinWidth="300" Background="Transparent" BorderThickness="0"
ScrollViewer.HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Hidden">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Margin="8,0,0,0" Orientation="Horizontal" HorizontalAlignment="Stretch" Background="Transparent">
</StackPanel>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Background" Value="#111"/>
<Setter Property="BorderBrush" Value="#AAA"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<StackPanel Orientation="Horizontal" Margin="-8,0,0,0">
<Image Source="Assets/breadcrumb.png" VerticalAlignment="Center" Margin="5,0,0,0"/>
<ContentPresenter />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel VerticalAlignment="Stretch">
<TextBlock FontSize="35" Text="{Binding Name}" VerticalAlignment="Center" Padding="5,10"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 0 :(得分:1)
您可能需要为Panel
构建自定义ListBox.ItemsPanelTemplate
。您可以通过这种方式非常简单地创建所需的功能,因为您基本上可以在渲染时测量每个面包屑并仅显示适合的面包屑。
如果您还没有这方面的经验,请不要被推迟......您可以使用自定义Panel
来完成一些精彩的事情。以下是一些可以帮助您的文章: