2010-02-28 45 views
0

我在silverlight toolkit的手風琴控件中遇到問題樣式/模板AccordionItem。由於某種原因,子控件是左對齊。我可以解決這個問題的唯一方法是編輯ExpandableContentControlStyleAccordionItem將xaml樣式附加到元素中,但未明確聲明它

風格是位於下方:

<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」),上述問題可能會過時。我不能沒有下面的模板屬性編輯:

  1. 的ContentTemplate
  2. ItemContainerStyle
  3. AccordionButtonStyle
  4. ItemsPanel
  5. 的ItemTemplate

如果有人知道這是怎麼回事,我會感謝您的幫助,或者你可以幫助多個元素的樣式。

回答

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中,您必須明確給出樣式a 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> 
+0

不,我不想設置樣式。我想在頁面上顯示樣式,並自動應用於元素。像使用CSS。 – 2010-03-02 17:06:02

+0

更新了我的答案。這有幫助嗎? – 2010-03-03 02:27:05