我正在尝试在Silverlight 4中为手风琴对象创建一个简单的标题模板。

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

因为我想将这些值直接绑定到实际的手风琴项目,所以我创建了一个新类型'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的文本和Image的Visibility绑定到基础AccordionItemWithIcons对象中设置的值?我已经花了几个小时弄乱了不同的DataContext和源,似乎无法使它正常工作!

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

FirstItem.CheckIsVisible = Visibility.Visible

最佳答案

为此,存在一个VisibilityToBooleanConverter

<BooleanToVisibilityConverter x:Key=”boolVisConverter”/>


[...]

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

10-06 08:13