与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}"
尝试用这个替换你的属性:
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)
作为父类型;您需要将其替换为您的控件类型。