我在silverlight toolkit的手风琴控件中设置/模板 AccordionItem 时遇到问题。出于某种原因,子控件左对齐。我可以解决此问题的唯一方法是编辑 AccordionItem 上的 ExpandableContentControlStyle 。
样式位于:
<Style x:Key="ExpandableContentControlStyle1" TargetType="layoutPrimitivesToolkit:ExpandableContentControl">
<Setter.Value>
<ControlTemplate TargetType="layoutPrimitivesToolkit:ExpandableContentControl">
<ContentPresenter x:Name="ContentSite" Cursor="{TemplateBinding Cursor}" Margin="0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" ContentTemplate="{TemplateBinding ContentTemplate}" HorizontalAlignment="Stretch" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
现在我的问题是要将此样式附加到AccordionItem,我必须设置它:
<layoutToolkit:Accordion HorizontalAlignment="Stretch">
<layoutToolkit:AccordionItem Header="Hello" BorderBrush="{x:Null}" ExpandableContentControlStyle="{StaticResource ExpandableContentControlStyle1}"/>
<layoutToolkit:AccordionItem Header="Haha" BorderBrush="{x:Null}"/>
</layoutToolkit:Accordion>
但那些 AccordionItem 将从 ItemSource 生成。我想做的是将该样式应用于生成的 AccordionItem ,而不进行设置。
PS。如果我能找到如何从父 Accordion 编辑( ContentPresenter x:Name =“ContentSite”),上述问题就会过时。我无法从以下任何模板属性中编辑它:
如果有人知道这是怎么回事,我会很感激帮助,或者你可以帮助设计多个元素。
答案 0 :(得分:0)
我自己没有使用过Accordion控件,但通常会将ItemContainerStyle设置为列表中每个项目所需的样式。例如,如果您想在ListBox上使用特定的ListBoxItem样式,请将ItemContainerStyle设置为所需的ListBoxItem样式。我瞥了一下手风琴的来源,这似乎也适用于那个控制。尝试将Accordion的ItemContainerStyle属性设置为ExpandableContentControlStyle1。
<layoutToolkit:Accordion
HorizontalAlignment="Stretch"
ItemContainerStyle="{StaticResource ExpandableContentControlStyle1}">
</layoutToolkit:Accordion>
要在控件本身之外设置样式,请为Accordion创建样式。如果您使用的是Silverlight 4,则可以使用隐式样式。将以下样式放在页面的<UserControl.Resources>
部分。
<Style TargetType="layoutToolkit:Accordion">
<Setter Property="ItemContainerStyle" Value="{StaticResource ExpandableContentControlStyle1}"/>
</Style>
否则,对于Silverlight 3,您必须明确地为该样式指定一个Key并在Accordion控件上显式设置样式。
<Style x:Key="Control_Accordion" TargetType="layoutToolkit:Accordion">
<Setter Property="ItemContainerStyle" Value="{StaticResource ExpandableContentControlStyle1}"/>
</Style>
<layoutToolkit:Accordion
Style="{StaticResource Control_Accordion}"
HorizontalAlignment="Stretch">
</layoutToolkit:Accordion>