You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在ItemsControl中使用带自定义属性的UserControl出现绑定错误

问题排查与解决

错误根源

异常提示“无法为类型为‘UserControl1’的‘Text1’属性设置‘Binding’。‘Binding’只能设置在DependencyObject的DependencyProperty上”,本质原因是:
UserControl2的XAML中,xmlns:local指向的是Project.Controls.Elements,但UserControl1实际位于Project.Controls命名空间,导致XAML解析时找不到正确的UserControl1类型,误将Text1/Text2识别为普通CLR属性(而非依赖属性),从而无法绑定。

修复步骤

  1. 修改UserControl2.xaml中的命名空间声明,将local指向UserControl1所在的Project.Controls:
<UserControl x:Class="Project.Controls.UserControl2"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:Project.Controls"
             mc:Ignorable="d" 
             Height="450" Width="800">
  1. (可选优化)为UserControl1的依赖属性添加默认值,避免空引用问题:
public readonly DependencyProperty Text1Property =
    DependencyProperty.Register("Text1", typeof(string), typeof(UserControl1), new PropertyMetadata(string.Empty));

public readonly DependencyProperty Text2Property =
    DependencyProperty.Register("Text2", typeof(string), typeof(UserControl1), new PropertyMetadata(string.Empty));

验证效果

重新编译运行项目,ItemsControl将正确绑定MyListItem的Text1/Text2属性,UserControl1会正常渲染列表内容,不再抛出XAML解析异常。

内容的提问来源于stack exchange,提问作者nckstr15

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 12:25:20