我正在尝试做MVP,我有一个视图特定的模型,演示者操作和视图绑定。演示者和视图之间没有其他连接(视图通过网关类型模式触发域模型的命令)。
正如您所猜测的,这使得能够绑定到任何对象的任何属性都非常重要。
我无法找到绑定到Enabled
的{{1}}属性的正确方法。大多数控件都有ToolStripMenuItem
属性,但是这个属性似乎缺少它。我没有在网上找到有关如何执行此操作的详细信息。它甚至可能吗?
答案 0 :(得分:6)
我找到了答案here:创建一个实现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
答案 1 :(得分:1)
我很乐意听取其他用户的意见,尤其是关于如何实现对Enabled
的{{1}}属性的绑定...以下是我发现的内容远:
大多数用户控件都继承自ToolStripMenuItem
,它们具有继承的System.Windows.Forms.Control
属性。但是,DataBindings
不会继承ToolStripMenuItem
,因此您无法向Control
集合添加绑定。不完全是一个令人满意的答案,但至少它解释了为什么这不可能以你做的典型方式做。