Winform DataBind控制可见属性

B Z*_*B Z 6 data-binding .net-3.5 winforms

WinForms,.NetFramework 3.5

数据绑定到控件的可见属性时是否存在任何已知问题?

无论我的财产是什么,控件始终不可见.

Public ReadOnly Property IsRibbonCategory() As Boolean
    Get
        Return True
    End Get
End Property
Run Code Online (Sandbox Code Playgroud)

我尝试了控件的文本属性和其他属性,它们似乎正常工作.

我正在尝试设置Panel的可见属性.

使用BindingSource.

Thx提前.

Eri*_*ith 8

我发现,如果你认为绑定到控件的Visible属性会被破坏,生命会更好,尽管它有时会起作用.请参阅http://support.microsoft.com/kb/327305,其中说的很多(虽然知识库文章适用于.NET 1.0和1.1,但它似乎仍然是至少2.0的问题).

我创建了一个用于创建绑定的实用程序类,除其他外,它为我提供了一个集中的地方来添加解决方法.而不是在Visible上实际创建绑定,它做了两件事:

  1. 它订阅数据源的INotifyPropertyChanged.PropertyChanged事件,并在引发事件时将Visible值设置为适当的值.
  2. 它根据当前数据源值设置Visible的初始值.

这需要一点反射代码,但也不算太糟糕.至关重要的是,您不绑定Visible属性进行解决方法,否则它将无法工作.

  • +1,显然对于.NET 4仍然如此. (6认同)

Dav*_*ell 6

解决方法:设置 BindingComplete 事件的 Visible 属性。

我在设置标签的 Visible 属性时遇到了同样的问题 - 始终保持 false,即使设置 Enabled 属性工作正常。


And*_*eek 5

我刚刚在 .NET 4.7.1 和 Visual Studio 2017 中遇到了这个问题。为了解决这个问题,我将Visible控件上的属性更改为最初设置为True,就像False以前一样。