我正在使用 MVVM(MVVM Light) 开发一个 wpf 应用程序。我的 View 有一个属性标记,它像这样在构造函数中传递到我的 View 模型。
DataContext = new ChartNewViewModel(Token);
我想使用标记从 xaml 设置我的数据上下文。对于所有那些具有默认无参数构造函数的 View 模型,我使用了这个
<Window.DataContext>
<viewModel:ChartNewViewModel></viewModel:ChartNewViewModel>
</Window.DataContext>
我不知道如何使用 xaml 在 viewmodel 的构造函数中传递参数。
最佳答案
XAML 2006 通过初始化文本对非默认初始化的支持有限。但是,ObjectDataProvider
可用于解决方法
给你
<Window.DataContext>
<ObjectDataProvider ObjectType="viewModel:ChartNewViewModel">
<ObjectDataProvider.ConstructorParameters>
<model:Token />
</ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider>
</Window.DataContext>
如果您使用的是 XAML 2009,那么您可以使用 x:Arguments
指令
例子
<Window.DataContext>
<viewModel:ChartNewViewModel>
<x:Arguments>
<model:Token />
</x:Arguments>
</viewModel:ChartNewViewModel>
</Window.DataContext>
x:Arguments
是仅来自 XAML 2009 的功能。
更多关于 x:Arguments
关于c# - 使用参数化构造函数从标记设置 View 的 DataContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24653169/