Как связать значения элементов в шаблоне заголовка гармошки - PullRequest
3 голосов
/ 08 сентября 2011

Я пытаюсь создать простой шаблон заголовка для объекта аккордеона в silverlight 4.

Я добавил изображение и TextBlock в шаблон заголовка AccordionItem.Я хочу скрыть или показать изображение в зависимости от значений, введенных на странице.

Поскольку я хочу привязать эти значения непосредственно к фактическому элементу аккордеона, я создал новый тип 'AccordionItemWithIcons', который просто наследуется от AccordionItem, но добавляет пару свойств зависимости, чтобы справиться с этим.Я только показываю пару из этих свойств для краткости.:)

Итак, вот мой аккордеон с моим элементом управления 'AccordionItemWithIcons'.Обратите внимание, что свойство 'CheckIsVisible' имеет тип 'Visibility'

<Grid x:Name="LayoutRoot">
    <Controls:Accordion Height="100">
        <my:AccordionItemWithIcons
            x:Name="FirstItem"
            Content="Content Text" 
            Header="Header Text" 
            CheckIsVisible="Collapsed" 
            EventSummary="Summary Text" 
            HeaderTemplate="{StaticResource AccordionItemHeaderTemplate1}"/>
    </Controls:Accordion>
</Grid>

А вот шаблон заголовка.

<DataTemplate x:Key="AccordionWithIcons_HeaderTemplate1" >
    <Grid  >            
        <StackPanel Orientation="Horizontal" VerticalAlignment="Top">
            <TextBlock Text="{Binding EventSummary}" />
            <Image Visibility="{Binding CheckIsVisible}" Source="/Labyrinth;component/cross.png"/>
        </StackPanel>
    </Grid>
</DataTemplate>

Может кто-нибудь объяснить, как я могу связать текст TextBlock иВидимость изображения для значений, установленных в базовом объекте AccordionItemWithIcons?Я часами возился с различными DataContext и источниками и, похоже, не могу заставить это работать!

Я не знаю, поможет ли объяснить, что я пытаюсь достичь, но в конечном счете в кодея хочу иметь возможность сказать что-то вроде (показано ниже), чтобы показать или скрыть значок в шаблоне заголовка.

FirstItem.CheckIsVisible = Visibility.Visible  

1 Ответ

0 голосов
/ 08 сентября 2011

Для этого существует VisibilityToBooleanConverter

<BooleanToVisibilityConverter x:Key=”boolVisConverter”/>

[...]

Visibility="{Binding ElementName=anyCheckbox,
    Path=IsChecked,
    Converter={StaticResource boolVisConverter}}"
...