我正在尝试做 MVP,我有一个特定于视图的模型,演示者操作并且视图绑定到。演示者和视图之间没有其他连接(视图通过网关类型模式向域模型发出命令)。
您可以猜到,这使得绑定到任何对象的任何属性的能力非常重要。
我无法找到绑定到Enabled
a 属性的正确方法ToolStripMenuItem
。大多数控件都有一个.DataBindings
属性,但这个似乎缺少它。我在网上没有找到太多关于如何做到这一点的信息。甚至可能吗?
我在这里找到了答案:创建一个实现 IBindableComponent 的自定义 ToolStripMenuItem。
链接中的示例:
Public Class BindableToolStripMenuItem
Inherits ToolStripMenuItem
Implements IBindableComponent
Private m_bindingContext As BindingContext
Private m_dataBindings As ControlBindingsCollection
<Browsable(False)> _
Public Property BindingContext() As BindingContext
Get
If m_bindingContext Is Nothing Then
m_bindingContext = New BindingContext()
End If
Return m_bindingContext
End Get
Set(value As BindingContext)
m_bindingContext = value
End Set
End Property
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
Public ReadOnly Property DataBindings() As ControlBindingsCollection
Get
If m_dataBindings Is Nothing Then
m_dataBindings = New ControlBindingsCollection(Me)
End If
Return m_dataBindings
End Get
End Property
End Class
我很想听听其他用户的意见,特别是关于如何完成Enabled
对 a ... 属性的绑定,ToolStripMenuItem
以下是我迄今为止发现的内容:
大多数用户控件继承自System.Windows.Forms.Control
其中具有DataBindings
它们继承的属性。但是,ToolStripMenuItem
不继承Control
,因此您不能将绑定添加到DataBindings
集合。不完全是一个令人满意的答案,但至少它解释了为什么这不可能以你会做的典型方式来做。