gpt4 book ai didi

c# - 无法将 Observable 集合绑定(bind)到 UserControl 上的附加属性

转载 作者:行者123 更新时间:2023-11-30 12:26:07 25 4
gpt4 key购买 nike

我想将自定义类型 (BoundItem) 的 ObservableCollection 绑定(bind)到 View 。

我是这样用的:

<v:MyUserControlBase x:Class="My.Views.MyView"
(...)
h:FrameworkElementDropBehavior.MyItems="{Binding Attachments}">

附件在 ViewModel 中定义为:

public ObservableCollection<BoundItem> Attachments 
{
get { return _Attachments; }
set { _Attachments = value; }
}

我的 View 是一个实际的 DependencyObject,因为当我在 View 后面的代码中执行以下代码时:

MessageBox.Show((this as DependencyObject).ToString());

它显示“真”。

我以这种方式定义了我的依赖属性:

    public static readonly DependencyProperty MyItemsProperty = DependencyProperty.RegisterAttached("MyItems", typeof(ObservableCollection<BoundItem>), typeof(MyView), new FrameworkPropertyMetadata(null));
public static string GetMyItems(DependencyObject element)
{
if (element == null) throw new ArgumentNullException("MyItems");
return (ObservableCollection<BoundItem>)element.GetValue(MyItemsProperty);
}
public static void SetMyItems(DependencyObject element, ObservableCollection<BoundItem> value)
{
if (element == null) throw new ArgumentNullException("MyItems");
element.SetValue(MyItemsProperty, value);
}

出现的错误是:

A 'Binding' cannot be set on the 'SetMyItems' property of type 'MyView'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.

谢谢你的帮助:) .x

最佳答案

问题出在您的属性(property)登记上。而不是所有者类型 MyView 它应该是 FrameworkElementDropBehavior 即您定义属性的类。

public static readonly DependencyProperty MyItemsProperty =
DependencyProperty.RegisterAttached("MyItems",
typeof(ObservableCollection<BoundItem>),
typeof(FrameworkElementDropBehavior),
new FrameworkPropertyMetadata(null));

关于c# - 无法将 Observable 集合绑定(bind)到 UserControl 上的附加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29743192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com