Popup的IsOpen和Visibility属性之间的区别?

时间:2010-03-17 08:11:26

标签: wpf xaml popup

我玩过WPF Popup Control,据我所见,Visibility属性是多余的。

如果你有一个IsOpen = True的Popup,即使它的Visibility = Collapsed也会显示。

如果你有一个IsOpen = False的Popup,那么它的Visibility将被折叠,当IsOpen变为true时它将保持“Collapsed”,并且它会出现。 (即,即使Snoop说它已经崩溃,你的屏幕上也会出现一些东西。)

为什么Popup控件具有这两个属性?我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:1)

我相信你是对的......它几乎是多余的。我认为问题是Visibility属性是从UIElement继承的,可以解释为“这应该具有正常的可视化表示”。

由于Popup没有任何可视化表示,因此它处于“默认状态......即:当它关闭时,该属性并不意味着什么。IsOpen然而,更多的是一个基于行为的属性......即:“是否应该允许用户与我正常隐藏的内容进行交互?”或者也许我只是在证明微软的工作是正确的。

在一天结束时,任何具有UI表示的内容都会继承UIElement,因此即使在没有任何意义的情况下也会获得Visibility属性。

答案 1 :(得分:0)

MSDN为两者提供了完整的平均值和目的。

Popup.IsOpen - 获取或设置一个值,该值指示Popup是否可见。

Popup.Visibility - 获取或设置此元素的用户界面(UI)可见性。它继承自UIElement。