Wpf 在XAML设计数据中引用对象

Wpf 在XAML设计数据中引用对象,wpf,visual-studio-2010,xaml,Wpf,Visual Studio 2010,Xaml,如何在XAML设计数据文件中引用同一对象两次或多次? 我试图使用{x:Reference},但这似乎不起作用 以下是一个例子: 样本数据网格第二列单元格中的组合框显示数据类型列表。可用数据类型的列表来自主窗口的视图模型的types属性=数据上下文。网格中的项目列表来自视图模型的“项目”属性。每个项都有一个名称和一个类型列,其中类型引用数据类型对象 示例网格如下所示: 以下是XAML设计数据,它应该在Visual Studio designer中显示相同的网格内容,但它没有: 在上面,我使用{x:

如何在XAML设计数据文件中引用同一对象两次或多次? 我试图使用{x:Reference},但这似乎不起作用

以下是一个例子:

样本数据网格第二列单元格中的组合框显示数据类型列表。可用数据类型的列表来自主窗口的视图模型的types属性=数据上下文。网格中的项目列表来自视图模型的“项目”属性。每个项都有一个名称和一个类型列,其中类型引用数据类型对象

示例网格如下所示:

以下是XAML设计数据,它应该在Visual Studio designer中显示相同的网格内容,但它没有:

在上面,我使用{x:Reference String}获取对由创建的对象的引用

在Visual Studio设计器中,列表为空,并且在标记中发现错误消息Errors:。。。此时将显示DesignData.xaml。在设计数据XAML文件的编辑器中,我得到一条错误消息,即服务提供程序缺少Inamersolver服务

除了{x:Reference}之外,还有其他方法可以在设计数据文件中引用对象吗

为完整起见,以下是我的样本的剩余文件:

MainWindow.xaml:

MainWindow.xaml.cs:

使用制度; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 使用System.Windows; 使用System.Windows.Controls; 使用System.Windows.Data; 使用System.Windows.Documents; 使用System.Windows.Input; 使用System.Windows.Media; 使用System.Windows.Media.Imaging; 使用System.Windows.Navigation; 使用System.Windows.Shapes; 命名空间DataGridSample { /// ///MainWindow.xaml的交互逻辑 /// 公共部分类主窗口:窗口 { 只读MainWindowViewModel _viewModel=新的MainWindowViewModel; 公共主窗口 { 初始化组件; DataContext=_viewModel; } } } MainWindowViewModel.cs:

使用制度; 使用System.Collections.Generic; 使用System.Collections.ObjectModel; 使用System.Linq; 使用系统文本; 命名空间DataGridSample { 公共类MainWindowViewModel { 私有只读可观察收集数据类型; 私有只读可观察收集项目; 公共主窗口视图模型 { 数据类型typeString=新数据类型{Name=String}; 数据类型typeInteger=新数据类型{Name=Integer}; _数据类型=新的ObservableCollection{typeString,typeInteger}; _items=新的ObservableCollection { 新项{Name=Lorem,Type=typeString}, 新项目{Name=Ipsum,Type=typeInteger} }; } 公共可观测集合类型 { 收到 { 返回数据类型; } } 公共可观测收集项目 { 收到 { 退货(物品);; } } } 公共类数据类型 { 公共字符串名称{get;set;} } 公共类项目 { 公共字符串名称{get;set;} 公共数据类型类型{get;set;} } } 为什么x:Reference不起作用的背景

x:Reference是XAML2009的一个特性

不能在根据MSDN文档编译的XAML标记中使用x:Reference

它是为松散的XAML设计的…例如。如果您创建一个XAML页面.XAML并通过Internet Explorer加载它

使用DesignData时,设计器将有效地创建和编译一个新类,其形状和内容如DesignData文件中所述

VisualStudio/Blend设计器中不支持它

这里有一个相反的论点

以下是亚当·内森(Adam Nathan)出版的WPF 4《自由世界》一书的解释: x:引用标记扩展经常错误地与 当时只能从松散的XAML中使用的XAML2009特性 这篇文章的作者。虽然x:Reference是WPF4中的一个新特性,但它 可以从XAML2006开始使用,只要您的项目是 以.NET Framework的版本4或更高版本为目标。一个小问题是 VisualStudio2010中的XAML设计器没有��处理不当 x:参考,因此它给出了以下设计时错误,您可以 安全忽略:服务提供商缺少Inamersolver服务

变通解决方案…

x:Reference仅适用于FrameworkElement的名称。我知道我不能使用{x:Reference};这就是我上面写的。如果没有弄清楚,我重复原来的问题:除了{x:Reference}之外,还有什么我可以选择的吗 se在设计数据文件中引用对象?顺便说一下:XAML设计数据文件没有编译。