【问题标题】:WPF C# Get Visibility of ObjectWPF C#获取对象的可见性
【发布时间】:2015-10-18 02:49:54
【问题描述】:

我有一个隐藏的标签和文本字段。我可以让它可见,但如果我稍后尝试隐藏它,它不起作用,我得到一个空引用错误。

if (SMTPAuthValue != "None")
{
    lblSMTPAccount.Visibility = System.Windows.Visibility.Visible;
    comboSMTPAccount.Visibility = System.Windows.Visibility.Visible;
}
else 
{
    if (lblSMTPAccount.Visibility == System.Windows.Visibility.Visible)
    {
        lblSMTPAccount.Visibility = System.Windows.Visibility.Hidden;
        comboSMTPAccount.Visibility = System.Windows.Visibility.Hidden;
    }
}

我不知道如何获取可见性属性并比较其当前状态。如果您能帮助我更正代码或简明扼要地解释它为什么不工作以及我可以在哪里阅读更多关于 WPF 和 C# 以更好地理解为什么这不工作,我也将不胜感激。

【问题讨论】:

  • 在调试器下运行代码,找出你在哪一行得到了 NullReferenceException。另外:您在此处显示的代码很好,这意味着您没有显示其他代码,这些代码将 SMTPAuthValue、lblSMTPAccount 或 comboSMTPAccount 设置为 null。
  • 另外,可见性检查是不必要的。如果您的逻辑是“如果 SMTPAuthValue == 'None',则隐藏对象”,您可以将可见性设置为隐藏,无论其当前状态如何。
  • 对命名空间 System.Windows.Visibility 使用别名以避免重复。
  • 我想指出,这不是 WPF 的用途。 Visibility 应该绑定到 ViewModel 中的值或另一个控件的属性。在这种情况下,使用 Converter 绑定到 SMTPAuthValue 会很方便。
  • @Dave 这是我的感觉,但我在协调用于进行更改的代码与 GUI 上的按钮而不是后端的按钮之间存在问题。

标签: c# wpf visibility


【解决方案1】:

如果NullReferenceException 来源于提供的代码,则lblSMTPAccountcomboSMTPAccount 必须是null。否则异常来自您的问题中未包含的代码。

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 2016-12-23
    • 2013-02-12
    • 2011-02-23
    • 2014-10-19
    • 2010-10-17
    • 2011-02-24
    • 2011-06-10
    • 2012-03-11
    相关资源
    最近更新 更多