Прикрепить стиль xaml к элементу без явного указания - PullRequest
0 голосов
/ 28 февраля 2010

У меня проблема со стилем / шаблоном AccordionItem в элементе управления аккордеоном из набора инструментов silverlight . По какой-то причине дочерние элементы управления выровнены по горизонтали влево. Единственный способ исправить это - отредактировать ExpandableContentControlStyle на AccordionItem .

Стиль расположен ниже:

<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. Вышеуказанная проблема может устареть, если я смогу просто узнать, как редактировать ( ContentPresenter x: Name = "ContentSite") из родительского Accordion . Я не могу изменить его из одного из следующих свойств шаблона:

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

Если кто-то знает, что происходит с этим, я буду признателен за помощь, или вы можете просто помочь с стилизацией нескольких элементов.

1 Ответ

0 голосов
/ 02 марта 2010

Я не использовал сам элемент управления Accordion, хотя обычно вы устанавливаете ItemContainerStyle в стиле, который вы хотите для каждого элемента в списке. Например, если вы хотите определенный стиль ListBoxItem для ListBox, вы устанавливаете ItemContainerStyle на нужный вам стиль ListBoxItem. Я взглянул на источник Аккордеона, и это, похоже, верно и для этого контроля. Попробуйте установить для свойства ItemContainerStyle Accordion значение ExpandableContentControlStyle1.

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

Чтобы установить стиль вне самого элемента управления, создайте стиль для Аккордеона. Если вы используете Silverlight 4, вы можете использовать неявные стили. Поместите следующий стиль в раздел <UserControl.Resources> вашей страницы.

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

В противном случае с Silverlight 3 вам придется явно назначить стилю ключ и явно задать стиль для элемента управления 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...