代码之家  ›  专栏  ›  技术社区  ›  Peter Alexandr Nikitin

wpf中datatrigger中的xml数据绑定

  •  1
  • Peter Alexandr Nikitin  · 技术社区  · 15 年前

    在wpf应用程序中,我已将数据模板正确绑定到一个xml节点,该节点如下所示:

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

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

    我的数据模板连接正确,因为其他一切都正常。例如,如果我更改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>
    

    我猜数据触发器中的数据绑定工作不正常。有人知道吗?

    3 回复  |  直到 13 年前
        1
  •  2
  •   Dave    15 年前

    我遇到了同样的问题与数据绑定切换按钮。尝试删除visibility=“false”,并用另一个处理不正确情况的datatrigger替换它。

        2
  •  1
  •   Tim    15 年前

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

    <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> 
    
        3
  •  1
  •   Nishit Gandhi    13 年前

    当然,如果你给出了一个特殊的else案例而不是仅仅是一个错误的案例,那么它是有效的。在我的例子中,它是{x:null}和value。因此,当要绑定的值存在时,它将为true,textblock.visiblity将使用setters值设置,当绑定路径中没有任何值时,即在我的示例中为null,它只是{x:null}:)