2012-05-31 59 views
2

我想要做MVP,其中我有一个视图特定模型,演示者操作和视图绑定到。演示者和视图之间没有其他连接(视图通过网关类型模式将命令发送到域模型)。如何绑定到ToolStripMenuItem的Enabled属性

正如你所猜测的,这使得绑定到任何对象的任何属性都非常重要。

我很难找到绑定到ToolStripMenuItemEnabled属性的正确方法。大多数控件拥有.DataBindings属性,但这个似乎缺乏它。我还没有找到关于如何做到这一点的许多信息。它甚至有可能吗?

回答

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 
+0

不错,做工相当不错:d感谢分享! –

1

我喜欢从其他用户听到,特别是它怎么可能能够实现绑定到一个ToolStripMenuItemEnabled属性...以下是我迄今为止的发现:

最用户控件继承自System.Windows.Forms.Control,它具有它们继承的DataBindings属性。但是,ToolStripMenuItem不会继承Control,因此您无法将绑定添加到DataBindings集合。这不完全是一个令人满意的答案,但至少可以解释为什么这样做是不可能的。

相关问题