【问题标题】:Binding to UserControl property绑定到 UserControl 属性
【发布时间】:2014-09-18 07:25:55
【问题描述】:

我在演示者中有一个 UserControl 属性:

public UserControl Control { get; set; }

XAML 代码:

<ContentControl Content="{Binding Control}"/>

当我运行应用程序时出现此错误:

System.Windows.Data 错误:40:BindingExpression 路径错误: 在“对象”“MainPresentet”上找不到“Presenters”属性 (哈希码=24706823)'。 BindingExpression:路径=演示者; DataItem='MainPresenter' (HashCode=24706823);目标元素是 'ItemsControl'(名称='');目标属性是“ItemSource”(类型 'IEnumerable')

我尝试将属性更改为 IEnumerable 并使用 ItemsControl,但我得到了同样的错误。

我不知道 UserControl 的名称,因为我是在运行时从其他 dll 中获取他的

【问题讨论】:

  • 错误不在您显示的代码中。你在某处有ItemsControl 吗? Presenters 属性绑定了某些东西,它抱怨在您的 ViewModel 中找不到任何此类属性。

标签: c# wpf user-controls


【解决方案1】:

你的错误很清楚:

System.Windows.Data 错误:40:BindingExpression 路径错误:在“对象”“MainPresentet”(HashCode=24706823)上找不到“Presenters”属性。 BindingExpression:路径=演示者; DataItem='MainPresenter' (HashCode=24706823);目标元素是 'ItemsControl' (Name=' ');目标属性是“ItemSource”(类型“IEnumerable”)

这意味着在您的代码中的某处,您尝试将数据绑定到名为 Presenters 的属性,但您尝试的 DataContext 实际上设置为 MainPresenter 类型的对象,并且该对象确实没有在其中声明了公共Presenters 属性。这个Binding 是在ItemsControl 或派生类的ItemSource 属性上设置的,例如ListBox

因此,此错误与您显示的代码无关,您需要在代码中搜索 Presenters Binding Path 并修复 Binding

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 2023-04-07
    • 2012-10-08
    • 1970-01-01
    相关资源
    最近更新 更多