我想创建一个面包屑控件,它在开头有一个按钮,用于清除面包屑项。我的问题是让第一个按钮与其余项目正确包装。这是我的风格:
<Style TargetType="{x:Type local:Breadcrumb}">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<Button Content="{Binding}"
FontSize="{Binding RelativeSource={RelativeSource AncestorType=local:Breadcrumb}, Path=BreadcrumbFontSize}"
FontFamily="{Binding RelativeSource={RelativeSource AncestorType=local:Breadcrumb}, Path=BreadcrumbFont}"
FontWeight="{Binding RelativeSource={RelativeSource AncestorType=local:Breadcrumb}, Path=BreadcrumbFontWeight}"
Width="{Binding RelativeSource={RelativeSource AncestorType=local:Breadcrumb}, Path=BreadcrumbItemWidth}"
Height="{Binding RelativeSource={RelativeSource AncestorType=local:Breadcrumb}, Path=BreadcrumbItemHeight}"
Margin="0,0,-22,10"
Style="{DynamicResource BreadcrumbButton}" />
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ItemsControl}">
<WrapPanel>
<Button Content="Menu" Height="{Binding RelativeSource={RelativeSource AncestorType=local:Breadcrumb}, Path=BreadcrumbItemHeight}"
Width="{Binding RelativeSource={RelativeSource AncestorType=local:Breadcrumb}, Path=BreadcrumbItemWidth}"/>
<ItemsPresenter Height="{TemplateBinding Height}" Width="{TemplateBinding Width}" />
</WrapPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
当所有项目都在同一条线上时,它会正确显示:
当它开始换行时,它会按下“菜单”按钮下方的所有项目:
有没有办法可以更新这个,以便其他元素不会低于菜单按钮?
答案 0 :(得分:1)
不,ItemsPresenter
将包含另一个WrapPanel
,我建议将该按钮作为项目的一部分(例如使用CompositeCollection
),然后它在同一个{{1} }}