我正在尝试在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}}"