wpf之依赖属性与VM属性的互动错误

自定义UserControl中的双向绑定错误与StackOverflowException
文章讲述了在使用自定义UserControl时,尝试在View和ViewModel中定义并双向绑定依赖属性,但在初始化时遇到StackOverflowException。开发者需解决跨层级绑定导致的无限递归问题以实现预期的UI渲染。

使用描述:自定义usercontrol

在view.xaml.cs中定义1个依赖属性,同时也在viewmodel中定义了相同的属性,

然后想通过在view.xaml中使用双向绑定的方式把依赖属性和VM中相同的属性进行绑定,目的是当外部引用此usercontrol时,通过给依赖属性传递值,进而因为与VM的属性绑定达到渲染出UI元素的效果。

发生错误位置(运行时错误):InitializeComponent();

错误信息:System.StackOverflowException”类型的未经处理的异常在 System.Private.CoreLib.dll 中发生

(部分代码如下)

IOIMCpuViewModel.cs:

private IOIMCpuModel ioCpuModel = new IOIMCpuModel();
        public IOIMCpuModel IoCpuModel { get => ioCpuModel; set { ioCpuModel = value; RaisePropertyChanged(); } }

view.xaml.cs:

public IOIMCpuView()
        {
            InitializeComponent();
        } 

public IOIMCpuModel IoCpuModelDp
        {
            get { return (IOIMCpuModel)GetValue(IoCpuModelProperty); }
            set { SetValue(IoCpuModelProperty, value); }
        }

        // Using a DependencyProperty as the backing store for IoCpuModel.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty IoCpuModelProperty =
            DependencyProperty.Register("IoCpuModelDp", typeof(IOIMCpuModel), typeof(IOIMCpuView), new PropertyMetadata(default(IOIMCpuModel)));

IOIMCpuView.xaml:

<UserControl.DataContext>
        <vm:IOIMCpuViewModel/>
    </UserControl.DataContext>

<grid>

<local:IOIMCpuView IoCpuModelDp="{Binding Path=IoCpuModel, Mode=TwoWay}"></local:IOIMCpuView>

<TextBlock Text="{Binding IoCpuModel.CpuId}" />

</grid>

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值