在WPF中的DataTrigger中数据绑定到XML

时间:2010-02-13 15:21:55

标签: wpf data-binding datatrigger

在WPF应用程序中,我已将DataTemplate正确绑定到XML节点,如下所示:

<answer answer="Tree", correct="false" score="10" />

在我的应用程序中,我有一个带有答案的TextBlock。首先,我希望它不可见,但是当XML文件中的正确属性变为“true”时,它必须变为可见。

我的DataTemplate正确连接,因为其他一切正常。例如,如果我更改XML文件中的answer属性(仅用于测试),它将在我的WPF视图中更改。但我在能见度方面遇到了麻烦。这是我的XAML:

<TextBlock Text="{Binding XPath=@answer}" Visibility="Hidden">
    <TextBlock.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding XPath=@correct}" Value="true">
                    <Setter Property="TextBlock.Visibility" Value="Visible" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

我猜测DataTrigger中的数据绑定无法正常工作。任何人都有线索?

3 个答案:

答案 0 :(得分:2)

我遇到了与数据绑定ToggleButtons相同的问题。尝试删除Visibility =“False”并将其替换为处理不正确情况的另一个DataTrigger。

答案 1 :(得分:1)

我认为问题是Visibility属性是硬编码的。尝试在样式中设置可见性:

<TextBlock Text="{Binding XPath=@answer}"> 
    <TextBlock.Style> 
        <Style TargetType="{x:Type TextBlock}">
            <Setter Property="Visibility" Value="Hidden"/>
            <Style.Triggers> 
                <DataTrigger Binding="{Binding XPath=@correct}" Value="true"> 
                    <Setter Property="TextBlock.Visibility" Value="Visible" /> 
                </DataTrigger> 
            </Style.Triggers> 
        </Style> 
    </TextBlock.Style> 
</TextBlock> 

答案 2 :(得分:1)

当然,如果你给出一个特定的其他案例而不仅仅是假,它就有效。在我的例子中,它是{x:Null}和值。所以当它的bind值存在时,它将是true,TextBlock.Visibilty将使用setters值设置,并且当绑定路径内部没有任何值时,即在我的情况下为null,它只是{x:Null} :)