WPF,只能在DependencyObject的DependencyProperty上设置“绑定”

时间:2018-07-12 07:48:48

标签: .net wpf vb.net visual-studio dependency-properties

首先,我想说的是我现在已经寻找了3天以上的答案。是的,我知道只能对DependencyProperty进行绑定。在我的项目中,我在多个地方,许多不同的库和许多不同的Windows / UserControl中使用DependencyProperty。一切正常。但是在一个特定的类中,我只是无法摆脱该错误...有趣的是,这只是VS抱怨此(不存在)问题的原因,因为该项目按预期进行编译和工作(我调查的唯一原因是由于由于该错误,建造者和设计者都在刷新接口时遇到问题)。这是课程(我在Internet上的某个地方找到了示例):

Public Class BindingProxy
    Inherits Freezable

    Public Shared ReadOnly DataProperty As DependencyProperty = DependencyProperty.Register("Data", GetType(Object), GetType(BindingProxy), New UIPropertyMetadata(AddressOf MyPropertyChangedHandler))

    Public Property Data As Object
        Get
            Return GetValue(DataProperty)
        End Get
        Set(value As Object)
            SetValue(DataProperty, value)
        End Set
    End Property

    Protected Overrides Function CreateInstanceCore() As Freezable
        Return New BindingProxy
    End Function

    Public Shared Sub MyPropertyChangedHandler(ByVal target As DependencyObject, ByVal args As DependencyPropertyChangedEventArgs)
        CType(target, BindingProxy).Data = args.NewValue
    End Sub
End Class

它的用法如下(此处“ Data”属性带有下划线并显示错误):

<helpers:BindingProxy x:Key="proxy" Data="{Binding}" />

此操作的目的是将模板化控件(如ListViews ItemTemplate的DataTemplate中的Button)绑定到主ViewModel:

<Button Command="{Binding Data.DoSomethingCommand, Source={StaticResource proxy}}" CommandParameter="{Binding ID}" />

BindingProxy类位于另一个项目中(相同的解决方案)。 正如我所说,该程序可以按预期进行编译和运行。只是在设计和调试过程中UI刷新使我发疯,这让我寻找答案...

预先感谢, 皮奥特·莱曼斯基(PiotrLemański)。

0 个答案:

没有答案