Я использовал изумительный пример, размещенный по адресу:
http://www.codeproject.com/KB/WPF/WPFDataGridExamples.aspx
для привязки сетки данных WPF к таблице данных.
Исходный код ниже компилируется нормально; он даже запускается и отображает содержимое таблицы данных InfoWork в сетке данных WPF. Ура! Но страница 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, версия = 3.0.0.0, культура = нейтральная,
PublicKeyToken = 31bf3856ad364e35 'не помечен как сериализуемый. в
System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers (RuntimeType
тип) в
System.Runtime.Serialization.FormatterServices.GetSerializableMembers (Тип
тип, контекст StreamingContext) в
System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo ()
в
System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize (Объект
obj, ISurrogateSelector surrogateSelector, контекст StreamingContext,
SerObjectInfoInit serObjectInfoInit, преобразователь IFormatterConverter,
ObjectWriter (ObjectWriter)
... В: Ms.Internal.Designer.DesignerPane.LoadDesignerView ()
редактировать: Исправлено Visual Studio. По крайней мере, это дает мне лучшее сообщение об ошибке:
Запрос разрешения типа
'System.Data.OleDb.OleDBPermission, system.Data, версия = 2.0.0.0,
Культура = нейтральная, PublicKeyToken = b77a5c561934e089 'не удалось.