我偶然发现了一个奇怪的问题。在我的wpf(.net 4)窗口中,我有一个简单的组合框(displaymemberpath=“name”selectedvaluepath=“id”)。加载窗口时,我使用linq to sql将组合框的itemsource属性设置为context.currencys.tolist()。SQL中的货币表只是
[id][uniqueidentifier]主键不为空,[name]char不为空
. 在.NET中,这转换为
id=system.guid,name=system.string
.
我遇到的问题是,调用comboBox.itemsSource=context.currencys.tolist();引发一个格式异常(guid应包含32位数字和4个破折号(xxxxx-xxxx-xxxx-xxxx-xxxx-xxxx xxxxxxxx))。
我不明白的是为什么会抛出这个错误?
如果将linq to sql放在图片之外,请定义一个“test”类-public class test public guid id id;public string name;,将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框架中的一个bug?
γ
PS!货币表包含有效的条目(有效的guid)。