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





