C# WPF将静态对象分配给XAML中的DataContext
我的情况是必须使用C# WPF将静态对象分配给XAML中的DataContext,c#,wpf,static,datacontext,C#,Wpf,Static,Datacontext,我的情况是必须使用静态对象作为我的数据上下文。 我读过很多帖子,建议改为使用单例类。但是,由于设计限制,我不能走这条路线 我想为我的控件DataContext分配一个静态对象,如下所示: <UserControl.DataContext> <local:ViewModelA> </UserControl.DataContext> 然而,它一直告诉我它是不可用的对象,因为它没有定义公共构造函数 在我的静态视图模型中,我有一个静态构造函数,但由于C#约
静态
对象作为我的数据上下文
。
我读过很多帖子,建议改为使用单例类。但是,由于设计限制,我不能走这条路线
我想为我的控件DataContext
分配一个静态对象,如下所示:
<UserControl.DataContext>
<local:ViewModelA>
</UserControl.DataContext>
然而,它一直告诉我它是不可用的对象,因为它没有定义公共构造函数
在我的静态视图模型中,我有一个静态构造函数,但由于C#约束,它不是公共的
谢谢您只能将(非静态)类的实例分配给DataContext
属性,而不能分配给类
但是,您可以绑定到静态类的静态属性SomeProperty
,例如:
<TextBlock Text="{Binding Path=(local:ViewModelA.SomeProperty)}" />
您只能将(非静态)类的实例分配给DataContext
属性,而不能分配给类
但是,您可以绑定到静态类的静态属性SomeProperty
,例如:
<TextBlock Text="{Binding Path=(local:ViewModelA.SomeProperty)}" />
您也可以使类中的所有内容都是静态的,但使实际的类不是静态的,这会给您一个与静态类似的效果。您也可以使类中的所有内容都是静态的,但使实际的类不是静态的,这会给您一个与静态类似的效果。什么是静态对象?有静态类和对象,它们是非静态类的实例。您的XAML创建了一个非静态类的实例ViewModelA
,因此需要一个非静态无参数构造函数。我的viewmodel是一个静态类。那么不,您不能这样做什么是静态对象?有静态类和对象,它们是非静态类的实例。您的XAML创建了一个非静态类ViewModelA
的实例,因此需要一个非静态无参数构造函数。我的viewmodel是一个静态类。那么,不,您不能这样做。我认为这只在4.5或4.6+版本中可能,因为WPF 4.5。@Clemens感谢您的提示。为什么路径的()很重要?没有它就不行。对于()我得到了一个无效的标记错误。但是如果运行该项目,usercontrol的行为将与预期的一样。我使用的是XAML4.5。2@Clemens我关闭了VisualStudio并重新打开它,现在它就像语法一样。您不觉得这种行为很奇怪吗?请参阅“数据绑定中对象的属性路径->单个属性、附加属性或其他类型限定属性”一节,了解为什么需要括号。我认为这只在4.5或4.6+版本中可能,因为WPF 4.5。@Clemens感谢您的提示。为什么路径的()很重要?没有它就不行。对于()我得到了一个无效的标记错误。但是如果运行该项目,usercontrol的行为将与预期的一样。我使用的是XAML4.5。2@Clemens我关闭了VisualStudio并重新打开它,现在它就像语法一样。您不觉得这种行为很奇怪吗?请参阅数据绑定中对象的PropertyPath部分->单个属性、附加或其他类型限定,了解为什么需要括号。