c# - 使用参数化构造函数从标记设置 View 的 DataContext

标签 c# wpf mvvm

我正在使用 MVVM(MVVM Light) 开发一个 wpf 应用程序。我的 View 有一个属性标记,它像这样在构造函数中传递到我的 View 模型。

DataContext = new ChartNewViewModel(Token);

我想使用标记从 xaml 设置我的数据上下文。对于所有那些具有默认无参数构造函数的 View 模型,我使用了这个

<Window.DataContext>
    <viewModel:ChartNewViewModel></viewModel:ChartNewViewModel>
</Window.DataContext>

我不知道如何使用 xaml 在 vi​​ewmodel 的构造函数中传递参数。

最佳答案

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/

相关文章:

c# - 为什么我无法安装我的 Windows 服务 - 指定的服务已经存在

c# - WPF 应用程序 list 文件

c# - 是否有任何带有 API 的实时视频流编辑开源项目可以满足我的需求?

c# - 自动滚动到 WPF 文本 block 的末尾

.net - 面向 Silverlight 人员的 WPF

wpf - 无法在 ComboBox WPF 中使用多选项目保存

c# - WPF-如何从 View 而不是viewmodel显示自定义异常

c# - 在 asp.net 菜单控件中显示图像下方的文本

c# - WPF:聚合 ListBox 上的属性

c# - mvvm 从加载的 View 模型中交叉执行方法