1

在 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 中的数据绑定工作不正常。有人有线索吗?

4

3 回答 3

2

我在使用数据绑定的 ToggleButtons 时遇到了同样的问题。尝试删除 Visibility="False" 并将其替换为另一个处理错误情况的 DataTrigger。

于 2010-02-13T16:12:49.607 回答
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> 
于 2010-02-13T16:28:47.307 回答
1

当然,如果你给出一个特定的 else 案例而不是 false,它会起作用。就我而言,它是 {x:Null} 和值。因此,当它的绑定值存在时,它将是 true 并且 TextBlock.Visibilty 将使用 setters 值设置,并且当绑定路径内部没有任何值时,即在我的情况下为 null,它只是 {x:Null} :)

于 2011-06-07T12:22:39.863 回答