2010-11-14 56 views
0

我偶然發現了一個奇怪的問題。在我的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.StringWPF可以處理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)。

+0

當您不將列表分配給組合框但是隻調用'context.Currencies.ToList();'?時會發生什麼? – 2010-11-14 13:04:38

+0

然後一切都很好。我可以很容易地將列表用於任何目的,例如我可以將它分配給datagrid.ItemsSource沒有問題......但是組合框不管出於何種原因都不喜歡它。 – Marko 2010-11-14 13:16:55

+0

你對'SelectedValue'有綁定嗎? – 2010-11-14 18:18:10

回答

0

正如Thomas指出的那樣,我在SelectedValue上有一個綁定,事實證明該綁定還包含一個FallbackValue = 1.在刪除fallback屬性後,所有的工作都可以正常工作。該物業滾動了視線,所以確實是我錯過了。