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

时间:2013-12-28 02:48:53

标签: c# wpf silverlight

类似于问here的问题,但在这种情况下看起来这个异常的原因是不同的。也许我把我的财产设置错了?

我有一个自定义的usercontrol,我想绑定它。但是,InitializeComponent抛出错误Object of type 'System.Windows.Data.Binding' cannot be converted to type 'System.Nullable 1[System.Guid]' VS表示它是抛出此错误的set属性。

我简化了我的属性以尝试找到错误,但它仍然没有任何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}"

1 个答案:

答案 0 :(得分:1)

试试这个

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)); }
    }
    }

我认为您正在尝试绑定简单的CLR属性。绑定需要Target作为DependencyProperty Custom binding。我在上面的代码中将typeof(UserControl)作为父类型替换为您的控件的Type。