如何在手风琴标题模板中绑定项目值

时间:2011-09-08 09:04:07

标签: c# silverlight templates binding accordion

我正在尝试为silverlight 4中的accordion对象创建一个简单的标题模板。

我在AccordionItem的标题模板中添加了一个图像和一个TextBlock。我想根据页面上输入的值隐藏或显示图像。

因为我想将这些值直接绑定到实际的折叠项,我创建了一个新类型'AccordionItemWithIcons',它只是从AccordionItem继承,但添加了几个依赖属性来处理它。为简洁起见,我只展示了几个属性。 :)

所以,这是我的'AccordionItemWithIcons'控件的手风琴。请注意,属性“CheckIsVisible”的类型为“可见性”

<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的文本和Image的Visibility绑定到底层AccordionItemWithIcons对象中设置的值吗?我花了几个小时搞乱不同的DataContext和来源,似乎无法让它工作!

我不知道是否有助于解释我想要实现的目标,但最终在后面的代码中我希望能够说出类似的内容(如下所示),以显示或隐藏标题模板中的图标

FirstItem.CheckIsVisible = Visibility.Visible  

1 个答案:

答案 0 :(得分:0)

为此,存在VisibilityToBooleanConverter

<BooleanToVisibilityConverter x:Key=”boolVisConverter”/>

[...]

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