WPF 将静态对象分配给 XAML 中的 DataContext

WPF assign static object to a DataContext in XAML

我处于必须使用 static 对象作为我的 DataContext 的情况。 我读过很多推荐 Singleton class 的帖子。但是,由于设计限制,我不能走这条路。

我想将静态对象分配给我的控件 DataContext,如下所示:

<UserControl.DataContext>
   <local:ViewModelA>
</UserControl.DataContext>

但是它一直告诉我它不是可用的对象,因为它没有定义 public 构造函数。

在我的静态视图模型中,我有一个静态构造函数,但由于 C# 限制,它不是 public。

谢谢

您只能将(非静态)class 的实例分配给 DataContext 属性,而不是 class。

然而,您可以绑定到静态 class 的静态 属性 SomeProperty,例如:

<TextBlock Text="{Binding Path=(local:ViewModelA.SomeProperty)}" />

您还可以将 class 中的所有内容设为静态,但将实际的 class 设为非静态,这会给您带来与静态类似的效果。