2011-09-08 73 views
3

我想在Silverlight 4如何绑定手风琴头模板

创建一个简单的头部模板手风琴对象我添加图像和一个TextBlock到的头部模板项目值AccordionItem。我想根据页面上输入的值隐藏或显示图像。

因为我想直接将这些值绑定到实际的手风琴项目,我创建了一个新类型“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的文本和图像的可见性,以在基础AccordionItemWithIcons对象设置值是多少?我花了几个小时来讨论不同的DataContext和源代码,似乎无法让它工作!

我不知道是否有助于解释什么,我试图实现,但最终在后面的代码我希望能这样说(如下图所示),以显示或隐藏在标题上的图标模板。

FirstItem.CheckIsVisible = Visibility.Visible 

回答

0

为此,存在VisibilityToBooleanConverter

<BooleanToVisibilityConverter x:Key=”boolVisConverter”/> 

[...]

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

好吧,你不必为这个..一个布尔值,如果两个属性您可以使用绑定:{Binding FirstItem,Path = CheckIsVisible} –

+0

感谢您抽出宝贵的时间,但我不认为这就是我所追求的。这是一个模板!在你的例子中,你正在指定要绑定的对象的名称。如果我这样做,那么我将需要为手风琴控制中的每个项目设置一个单独的模板。 另外,我不知道我需要一个类型转换可言,因为作为陈述的类型已经是“能见度”。 –