3

我正在尝试做 MVP,我有一个特定于视图的模型,演示者操作并且视图绑定到。演示者和视图之间没有其他连接(视图通过网关类型模式向域模型发出命令)。

您可以猜到,这使得绑定到任何对象的任何属性的能力非常重要。

我无法找到绑定到Enableda 属性的正确方法ToolStripMenuItem。大多数控件都有一个.DataBindings属性,但这个似乎缺少它。我在网上没有找到太多关于如何做到这一点的信息。甚至可能吗?

4

2 回答 2

9

我在这里找到了答案:创建一个实现 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
于 2013-07-10T18:50:57.140 回答
1

我很想听听其他用户的意见,特别是关于如何完成Enabled对 a ... 属性的绑定,ToolStripMenuItem以下是我迄今为止发现的内容:

大多数用户控件继承自System.Windows.Forms.Control其中具有DataBindings它们继承的属性。但是,ToolStripMenuItem不继承Control,因此您不能将绑定添加到DataBindings集合。不完全是一个令人满意的答案,但至少它解释了为什么这不可能以你会做的典型方式来做。

于 2012-06-08T13:11:32.913 回答