代码之家  ›  专栏  ›  技术社区  ›  Shawn Mclean

将xaml样式附加到元素而不显式声明它

  •  0
  • Shawn Mclean  · 技术社区  · 16 年前

    我在设计/模板 手风琴项目 silverlight toolkit . 由于某些原因,子控件水平左对齐。我唯一能解决这个问题的方法就是编辑 上 手风琴项目 .

    样式位于下面:

    <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>
    

    将从 项目源 . 我想做的是将这种样式应用到生成的 没有设置。

    任命者 来自父级的x:Name=“ContentSite”) 手风琴

    1. 内容模板
    2. 项目容器样式
    3. 手风琴按钮样式

    如果有人知道这是怎么回事,我会很感激你的帮助,或者你可以帮助造型的多个元素。

    1 回复  |  直到 16 年前
        1
  •  0
  •   Joe McBride    16 年前

    我自己还没有使用Accordion控件,不过通常您会将ItemContainerStyle设置为列表中每个项所需的样式。例如,如果您希望列表框上有一个特定的ListBoxItem样式,可以将ItemContainerStyle设置为所需的ListBoxItem样式。我瞥了一眼手风琴的来源,这似乎也适用于控制。尝试将Accordion的ItemContainerStyle属性设置为ExpandableContentControlStyle1。

    <layoutToolkit:Accordion
        HorizontalAlignment="Stretch"
        ItemContainerStyle="{StaticResource ExpandableContentControlStyle1}">
    </layoutToolkit:Accordion>
    

    <UserControl.Resources> 页面的一部分。

    <Style TargetType="layoutToolkit:Accordion">
      <Setter Property="ItemContainerStyle" Value="{StaticResource ExpandableContentControlStyle1}"/>
    </Style>
    

    否则,对于silverlight3,您必须显式地为样式指定一个键,并在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>