“System.Windows.Data.Binding”类型的对象无法转换为“System.Nullable`1[System.Guid]”类型

问题描述 投票:0回答:1

here所问的问题类似,但在这种情况下,此异常的原因似乎有所不同。也许我设置错误的属性?

我有一个自定义用户控件,我想绑定它。但是,InitializeComponent 抛出错误

Object of type 'System.Windows.Data.Binding' cannot be converted to type 'System.Nullable 1[System.Guid]'
VS 说这是抛出此错误的设置属性。

我简化了我的属性来尝试找出错误,但它仍然在没有任何 setter 逻辑的情况下发生

public Guid? SelectedItemGUID
{
    get
    {
        if (SelectedItem == null) return null;
        else return (Guid)SelectedItem.GetType().GetProperty("GUID").GetValue(SelectedItem, null);
    }
    set
    {
        return;
    }
}

我绑定到 XAML 中使用(client.BIllToClient 是一个

Guid?

SelectedItemGUID="{Binding Path=client.BillToClient, Mode=TwoWay}"
c# wpf silverlight
1个回答
3
投票

尝试用这个替换你的属性:

public static readonly DependencyProperty SelectedItemGUIDProperty = 
    DependencyProperty.Register(
        "SelectedItemGUID",
        typeof(Guid?),
        typeof(UserControl),
        new FrameworkPropertyMetadata(null)
    );

public Guid? SelectedItemGUID
{
    public Guid? SelectedItemGUID
    {
        get { return (Guid?)GetValue(SelectedItemGUIDProperty); }
        set { SetValue(SelectedItemGUIDProperty, (Guid?)SelectedItem.GetType().GetProperty("GUID").GetValue(SelectedItem, null)); }
    }
}

我认为您正在尝试绑定一个简单的 C# 属性。 WPF 绑定要求绑定目标是一个

DependencyProperty
。请参阅有关 custom bindings 的文档。我在上面的代码中有
typeof(UserControl)
作为父类型;您需要将其替换为您的控件类型。

© www.soinside.com 2019 - 2024. All rights reserved.