【问题标题】:Why does BooleanToVisibilityConverter seem to return "Hidden" (not "Collapsed") when passed DependencyProperty.UnsetValue?为什么 BooleanToVisibilityConverter 在传递 DependencyProperty.UnsetValue 时似乎返回“隐藏”(而不是“折叠”)?
【发布时间】:2011-06-15 04:47:24
【问题描述】:

我制作了一个简单的 XAML 文档查看器,其中使用了许多我们自己的值转换器,当然还有内置的。存在 DependencyProperty.UnsetValue 绑定是预期的行为。

我遇到了一个问题,我的文档的结果视图就像内置的 BooleanToVisibilityConverter 在这种情况下返回“隐藏”一样。我原以为它会像传入的值一样为 false。我什至不知道“隐藏”是可能的结果,MS docs 中也没有提到这样的事情。

由于我不想更改文档本身以适应,我不打算制作我自己的转换器,其行为符合我的预期。有什么想法可以在这里得到我想要的,甚至可以确认我所看到的是否有意义?

【问题讨论】:

    标签: wpf xaml c#-4.0 binding dependency-properties


    【解决方案1】:

    BooleanToVisibilityConverter 返回一个Visibility。如果你consult the documentation,你会发现Hidden 是一个有效值。导致DependencyProperty.UnsetValue 的绑定不会尝试通过其关联的转换器转换此值。它有效地关闭了绑定,即它应该具有与根本不存在绑定一样的结果。

    在这种情况下,您的Hidden 值将来自其他地方。要了解确定依赖属性值的机制,请查看有关 dependency property precedence 的文档。在您的情况下,它很可能是继承的或默认值(但这只是猜测!)

    【讨论】:

    • 谢谢。需要明确的是,我知道“隐藏”是一个有效的可见性值;我很困惑,因为它不是(据我所知) BooleanToVisibilityConverter 的有效结果 - 但是你解释它不是来自那里是有道理的。不过,我很困惑,因为我可以在调试器中看到,在类似情况下,我们自己的值转换器被调用,参数等于 DependencyProperty.UnsetValue。不管怎样,我会在今天晚些时候有时间的时候看看你链接的优先文档。
    • 我看了,但仍然看不到在我的具体情况下到底发生了什么。下个月工作压力大的时候,我会做一个最小的测试用例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 2023-01-12
    相关资源
    最近更新 更多