Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么';“有什么不对吗?”;DataContext=this";在WPF用户控件中?_C#_Wpf_Datacontext - Fatal编程技术网

C# 什么';“有什么不对吗?”;DataContext=this";在WPF用户控件中?

C# 什么';“有什么不对吗?”;DataContext=this";在WPF用户控件中?,c#,wpf,datacontext,C#,Wpf,Datacontext,我在某个地方读到,在用户控件的构造函数中设置DataContext=this是一种糟糕的做法(但找不到位置)。为什么这是一个坏习惯?替代方法是什么?通常,当有人使用您的控件时,他们会希望将其数据上下文设置为自己的视图模型类,并将控件上的属性绑定到他们的视图模型 如果您开始在控件内部处理数据上下文,并依赖于将其设置为“this”,那么您将阻止它们的绑定工作,或者您的控件将无法按预期工作,因为您依赖于它不会被更改 假设你有一个用户控件,上面有一堆子控件。您可以改为将子控件上的DataContext

我在某个地方读到,在用户控件的构造函数中设置
DataContext=this
是一种糟糕的做法(但找不到位置)。为什么这是一个坏习惯?替代方法是什么?

通常,当有人使用您的控件时,他们会希望将其数据上下文设置为自己的视图模型类,并将控件上的属性绑定到他们的视图模型

如果您开始在控件内部处理数据上下文,并依赖于将其设置为“this”,那么您将阻止它们的绑定工作,或者您的控件将无法按预期工作,因为您依赖于它不会被更改


假设你有一个用户控件,上面有一堆子控件。您可以改为将子控件上的DataContext设置为您的用户控件类(或任何您想要的)。这将允许您将这些子控件绑定到用户控件的属性,同时仍然允许控件的任何用户将其数据上下文设置为其视图模型并绑定到属性