gpt4 book ai didi

c# - 如何绑定(bind)到 XAML 中实例化类的属性

转载 作者:太空宇宙 更新时间:2023-11-03 23:25:52 24 4
gpt4 key购买 nike

我想知道是否可以使用 XAML 引用在类的代码后面创建的实例。

例如:我有两个类,MainWindowMainWindow_ViewModel

MainWindow 定义如下:

public partial class MainWindow : Window
{
static public MainWindow wn;
private MainWindow_ViewModel _mwvm;
public MainWindow_ViewModel mwvm
{
get
{
return _mwnm;
}
}

public MainWindow()
{
InitializeComponent();
wn = this;
_mwvm = new MainWindow_ViewModel();
}
}

1) 我如何在 MainWindow.xaml 中引用属性 MainWindow.wn.mwvm 而不创建 MainWindow_ViewModel 的新实例(目的是这是为了在不使用 DataContext 的情况下进行一些绑定(bind),但我需要在整个应用程序中使用相同的 MainWindow_ViewModel 实例)

2) 是否可以从 MainWindow.xaml 以外的 XAML 引用同一属性 (MainWindow.wn.mwvm)?

再次感谢大家的支持。

最佳答案

首先,您应该将窗口的 DataContext 设置为您的 ViewModel。只有这样,它的属性才会在 MainWindow 的 XAML 中可见。

例子:

<Window DataContext="{Binding mwvm}">
<TextBlock Text="{Binding PathToYourPropertyInVM} />
</Window>

始终确保您的 View 模型实现 INotifyPropertyChanged 或对可绑定(bind)属性使用 DependencyProperties。这是 UI 能够“监听”属性值变化所必需的。

如果您想要一个全局可访问的 ViewModel,您应该查看 ServiceLocator 模式。所有 MVVM 框架都为您实现它(MVVMLight、Caliburn 等)。它基本上由一个类组成,您可以在其中注册您的组件,并在需要时处理所有实例化。您应该对该主题进行一些研究,因为它相当广泛并且很难给出一个单一的答案。

希望这有帮助;)

关于c# - 如何绑定(bind)到 XAML 中实例化类的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33831354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com