c# - 如何在 C# 中使用 XAML 和 WPF 在 MVVM 环境中将 View 绑定(bind)到 Viewmodel

标签 c# wpf xaml mvvm

如果我想将 View 绑定(bind)到 View 模型,我将以下内容添加到我的 XAML 代码的资源中:

<Window.Resources>
    <DataTemplate DataType="{x:Type MyViewModel}" >
        <views:MyView />
    </DataTemplate>
</Window.Resources> 

是否有可能将 (viewmodel,view)-resource-entry 添加到我在 C# 代码中的资源字典中?

以下两行创建 key 并将其添加到字典中:

DataTemplateKey key = new DataTemplateKey(typeof(MyViewModel));
View.WindowName.Resources.Add(key, value);

但是我如何从 MyView 创建值,它必须具有 System.Windows.Baml2006.KeyRecord 类型?

最佳答案

here是关于如何使用 C# 代码创建数据模板的示例。

ps:您的问题标题应该类似于如何使用 C# 代码创建数据模板。顺便说一句,这与 mvvm 无关。更重要的是,这段代码当然不应该进入 View 模型;)

编辑:

DataTemplate temp = new DataTemplate();
temp.DataType = typeof (MyViewModel);

FrameworkElementFactory fac = new FrameworkElementFactory(typeof(MyView));

temp.VisualTree = fac;

View.WindowName.Resources.Add(new DataTemplateKey(typeof(MyViewModel)), temp );

在 xaml 中更容易 :)

关于c# - 如何在 C# 中使用 XAML 和 WPF 在 MVVM 环境中将 View 绑定(bind)到 Viewmodel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10411657/

相关文章:

c# - CS, __LINE__ 不可用,能不能写个替代方案?

c# - 在 WPF/XAML 中实现带有图标的工具栏

c# - WPF SQLite 查询异常

c# - 无法将命令绑定(bind)到 HyperlinkBut​​ton (Windows Phone 8.1)

c# - MVVM WPF 中的数据绑定(bind) - devexpress

c# - 如何在 C# .NET 中计算 CPU 平均负载

c# - 开启一个真表达式 c#

c# - 比较两个列表并生成具有匹配结果的新列表 C#

.net - WPF DataGrid 以编程方式添加复杂列

c# - 无法计算表达式,因为当前线程处于堆栈溢出状态