我使用了以下发布的奇妙示例:
http://www.codeproject.com/KB/WPF/WPFDataGridExamples.aspx
将WPF数据网格绑定到数据表。
下面的源代码编译得很好;它甚至运行并在WPF数据网格中显示InfoWork数据表的内容。万岁!但是带有datagrid的WPF页面将不会显示在设计器中。我的设计页面上显示了一个难以理解的错误,该页面显示在此帖子的末尾。我假设设计者在实例化数据视图以便在网格中显示时遇到一些困难。我该如何解决这个问题?
XAML代码:
xmlns:local="clr-namespace:InfoSeeker"
<Window.Resources>
<ObjectDataProvider
x:Key="InfoWorkData"
ObjectType="{x:Type local:InfoWorkData}" />
<ObjectDataProvider
x:Key="InfoWork"
ObjectInstance="{StaticResource InfoWorkData}"
MethodName="GetInfoWork" />
</Window.Resources>
<my:DataGrid
DataContext="{Binding Source={StaticResource InfoWork}}"
AutoGenerateColumns="True"
ItemsSource="{Binding}"
Name="dataGrid1"
xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit" />
C#代码:
namespace InfoSeeker
{
public class InfoWorkData
{
private InfoTableAdapters.InfoWorkTableAdapter infoAdapter;
private Info infoDS;
public InfoWorkData()
{
infoDS = new Info();
infoAdapter = new InfoTableAdapters.InfoWorkTableAdapter();
infoAdapter.Fill(infoDS.InfoWork);
}
public DataView GetInfoWork()
{
return infoDS.InfoWork.DefaultView;
}
}
}
显示错误代替其上有网格的设计器页面:
发生了未处理的异常:
输入'MS.Internal.Permissions.UserInitiatedNavigationPermission' Assembly'PresentationFramework,Version = 3.0.0.0,Culture = neutral, PublicKeyToken = 31bf3856ad364e35'未标记为可序列化。在 System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType 输入) System.Runtime.Serialization.FormatterServices.GetSerializableMembers(类型 type,StreamingContext context)at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() 在 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(对象 obj,ISurrogateSelector surrogateSelector,StreamingContext context, SerObjectInfoInit serObjectInfoInit,IFormatterConverter转换器, ObjectWriter objectWriter) ...在:Ms.Internal.Designer.DesignerPane.LoadDesignerView()
编辑:修复了我的Visual Studio。至少它给了我一个更好的错误信息:
请求类型的许可 'System.Data.OleDb.OleDBPermission,system.Data,Version = 2.0.0.0, Culture = neutral,PublicKeyToken = b77a5c561934e089'失败。
答案 0 :(得分:2)
我正在开发的项目是在(公司)网络驱动器上。如果我将项目移动到我的本地C:驱动器,则错误消失。