我偶然發現了一個奇怪的問題。在我的WPF(.NET 4)窗口中,我有一個簡單的組合框(DisplayMemberPath =「Name」SelectedValuePath =「Id」)。當我加載窗口時,我使用LINQ to SQL將組合框的ItemSource屬性設置爲context.Currencies.ToList()。 SQL中的貨幣表只是[Id] [uniqueidentifier] NOT NULL PRIMARY KEY,[Name] char NOT NULL。在.NET中,這轉換爲Id = System.Guid,Name = System.String。WPF可以處理Guid從LINQ到SQL嗎?
我遇到的問題是,調用combobox.ItemsSource = context.Currencies.ToList();拋出一個FormatException(Guid應該包含32個數字,4破折號(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx))。
我不明白的是爲什麼會拋出這個錯誤?
如果我離開LINQ to SQL出圖片,定義一個「測試」類 - public class Test {public Guid Id;公共字符串名稱; },將comobox.ItemsSource設置爲List<Test>
,其中包含一些條目,然後一切正常。
如果我這樣做:
combobox.ItemsSource = context.Currencies.Select(c => new { c.Id.ToString(), c.Name }).ToList()
然後一切正常。
我曾嘗試將當前線程的文化和UICulture預先設置爲「en-US」(以防萬一它是一種文化問題,我的默認文化是「et-EE」),但這也沒有幫助。
我看着從設計器生成的LINQ to SQL類,但找不到任何屬性可以改變這可能有助於解決這個錯誤。
我在這裏丟失了什麼,或者這真的是.NET框架中的錯誤?'
PS!貨幣表包含有效的條目(有效的Guid)。
當您不將列表分配給組合框但是隻調用'context.Currencies.ToList();'?時會發生什麼? – 2010-11-14 13:04:38
然後一切都很好。我可以很容易地將列表用於任何目的,例如我可以將它分配給datagrid.ItemsSource沒有問題......但是組合框不管出於何種原因都不喜歡它。 – Marko 2010-11-14 13:16:55
你對'SelectedValue'有綁定嗎? – 2010-11-14 18:18:10