【问题标题】:How to bind item values in an accordion header template如何在手风琴标题模板中绑定项目值
【发布时间】:2011-11-12 19:44:15
【问题描述】:

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

【问题讨论】:

    标签: c# silverlight templates binding accordion


    【解决方案1】:

    为此,存在一个 VisibilityToBooleanConverter

    <BooleanToVisibilityConverter x:Key=”boolVisConverter”/>
    

    [...]

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

    【讨论】:

    • 好的,你没有布尔值。如果两个属性的类型相同,你可以使用绑定:{Binding FirstItem, Path=CheckIsVisible}
    • 感谢您抽出宝贵时间,但我认为这不是我想要的。这是一个模板!在您的示例中,您正在指定要绑定到的对象的名称。如果我这样做,那么我将需要手风琴控件中的每个项目的单独模板。另外,我不确定我是否需要一个类型转换器,因为如上所述类型已经是“可见性”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    相关资源
    最近更新 更多