Я наткнулся на странную проблему.В моем окне WPF (.NET 4) у меня есть простой комбинированный список (DisplayMemberPath = "Name" SelectedValuePath = "Id").Когда я загружаю окно, я устанавливаю свойство ItemSource в выпадающем списке в context.Currencies.ToList (), используя LINQ to SQL.Таблица валют в SQL просто [Id] [uniqueidentifier] NOT NULL ПЕРВИЧНЫЙ КЛЮЧ, [Name] char NOT NULL .В .NET это переводится как Id = System.Guid, Name = System.String .
. У меня проблема в том, что вызов combobox.ItemsSource = context.Currencies.ToList();генерирует исключение FormatException (Guid должен содержать 32 цифры с 4 штрихами (ххххххх-хххх-хххх-хххх-ххххххххххх)).
Что я не могу понять, почему эта ошибка выдается?
Если я оставлю LINQ to SQL вне рисунка, определим класс «test» - публичный класс Test {public Guid Id;публичная строка Name;}, установите comobox.ItemsSource в List<Test>
, который содержит некоторые записи, тогда все работает.
Если я сделаю это:
combobox.ItemsSource = context.Currencies.Select(c => new { c.Id.ToString(), c.Name }).ToList()
, тогда все будет работать.
Я также пытался заранее установить для текущего потока «Культура и культура» значение «en-US» (на случай, если это проблема культуры, моя культура по умолчанию - «et-EE»), но это тоже не помогло.
Я посмотрел на сгенерированные классы LINQ to SQL от дизайнера, но не смог найти какие-либо свойства, которые могли бы помочь с этой ошибкой.
Я что-то здесь упустил или этодействительно ошибка в .NET Framework? ´
PS!Таблица Валюта содержит действительные записи (действительные направляющие).