Как добавить несколько пользовательских элементов управления в Accordion в xaml - PullRequest
4 голосов
/ 16 марта 2011

Я использую страницу Silverlight 4 с Аккордеоном, в который я пытаюсь вставить 2 пользовательских элемента управления для каждого элемента Аккордеона.

<toolkit:Accordion Name="accordion1">
    <toolkit:AccordionItem Content="item 1" Header="A">
        <local:AddRemoveControl x:Name="AddRemoveAgents" Margin="470,90,0,0">     </local:AddRemoveControl>
    </toolkit:AccordionItem>
    <toolkit:AccordionItem Content="item 2" Header="B -  long header">
        <local:DatesFilter x:Name="DatesFilter" Margin="475,200,0,0" Canvas.Top="76"> </local:DatesFilter>
    </toolkit:AccordionItem>
</toolkit:Accordion>

Я получаю следующее сообщение об ошибке: «Содержимое свойства задано более одного раза»

Как мне продолжить?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 16 марта 2011

В аккордеоне может быть только один элемент контента.

Что вам нужно будет сделать, это обернуть элементы управления в StackPanel:

<toolkit:Accordion Name="accordion1">
    <toolkit:AccordionItem Content="item 1" Header="A">
        <StackPanel>
            <local:AddRemoveControl x:Name="AddRemoveAgents" Margin="470,90,0,0"></local:AddRemoveControl>
            <local:DatesFilter x:Name="DatesFilter" Margin="475,200,0,0" Canvas.Top="76"> </local:DatesFilter>
        </StackPanel>
    </toolkit:AccordionItem>
</toolkit:Accordion>
0 голосов
/ 16 марта 2011

Вы определяете содержание дважды.Попробуйте удалить теги содержимого из AccordionItem следующим образом:

<toolkit:Accordion Canvas.Left="480" Canvas.Top="104" Height="100" Name="accordion1" Width="300">
    <toolkit:AccordionItem Header="A">
            <StackPanel>
                <local:AddRemoveControl x:Name="AddRemoveAgents" Margin="470,90,0,0"></local:AddRemoveControl>
            </StackPanel>
        </toolkit:AccordionItem>
    <toolkit:AccordionItem Header="B -  long header">
            <StackPanel>
                <local:DatesFilter x:Name="DatesFilter" Margin="475,200,0,0" Canvas.Top="76"></local:DatesFilter>
            </StackPanel>
    </toolkit:AccordionItem>
</toolkit:Accordion>

Кроме того, в зависимости от того, как у вас сейчас есть, вы получите два элемента Accodion с одним элементом управления в каждом.Чтобы получить оба элемента управления в одном и том же элементе, вам нужно поместить второй элемент управления в первую панель стека.

<toolkit:Accordion Canvas.Left="480" Canvas.Top="104" Height="100" Name="accordion1" Width="300">
<toolkit:AccordionItem Header="A">
     <StackPanel>
          <local:AddRemoveControl x:Name="AddRemoveAgents" Margin="470,90,0,0">                                        
      </local:AddRemoveControl>
          <local:DatesFilter x:Name="DatesFilter" Margin="475,200,0,0" Canvas.Top="76">
          </local:DatesFilter>
     </StackPanel>
 </toolkit:AccordionItem>

0 голосов
/ 16 марта 2011

Вот мой обновленный код:

<toolkit:Accordion Canvas.Left="480" Canvas.Top="104" Height="100" Name="accordion1" Width="300">
        <toolkit:AccordionItem Content="item 1" Header="A">
                <StackPanel>
                    <local:AddRemoveControl x:Name="AddRemoveAgents" Margin="470,90,0,0"></local:AddRemoveControl>
                </StackPanel>
            </toolkit:AccordionItem>
        <toolkit:AccordionItem Content="item 2" Header="B -  long header">
                <StackPanel>
                    <local:DatesFilter x:Name="DatesFilter" Margin="475,200,0,0" Canvas.Top="76"></local:DatesFilter>
                </StackPanel>
        </toolkit:AccordionItem>
    </toolkit:Accordion>
...