2010-02-13 59 views
1

一个DataTrigger WPF应用程序,我已经正确绑定一个DataTemplate来,看起来一个XML节点,如:数据绑定到XML在WPF

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

在我的申请,我有它的答案一个TextBlock 。起初,我希望它不可见,但是当XML文件中的正确属性更改为“true”时,它必须可见。

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

<TextBlock Text="{Binding [email protected]}" Visibility="Hidden"> 
    <TextBlock.Style> 
     <Style> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding [email protected]}" Value="true"> 
        <Setter Property="TextBlock.Visibility" Value="Visible" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 

我猜数据触发器中的数据绑定工作不正常。任何人都有线索?

回答

2

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

1

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

<TextBlock Text="{Binding [email protected]}"> 
    <TextBlock.Style> 
     <Style TargetType="{x:Type TextBlock}"> 
      <Setter Property="Visibility" Value="Hidden"/> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding [email protected]}" Value="true"> 
        <Setter Property="TextBlock.Visibility" Value="Visible" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 
+0

难道他不希望它作为数据触发器吗?如果答案被改变并且又不正确呢?不知道为什么用户会这样做,但仍然需要考虑。 – Dave 2010-02-13 16:37:33

+0

@Dave,你说得很好。我的回答只是针对他的特定问题和代码示例。 – Tim 2010-02-13 16:46:08

1

当然,如果您给出特定的其他情况而不仅仅是错误,它会起作用。就我而言,它是{x:Null}和值。所以,当它的绑定值存在时,它将是真实的,TextBlock.Visibilty将使用setter值设置,当绑定路径没有任何值时,即在我的情况下为null,它简单的{x:Null} :)