代码之家  ›  专栏  ›  技术社区  ›  Marko

WPF可以处理从LINQ到SQL的guid吗?

  •  0
  • Marko  · 技术社区  · 15 年前

    我偶然发现了一个奇怪的问题。在我的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)。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Marko    15 年前

    正如托马斯指出的,我对selectedValue有一个绑定,结果发现绑定还包含一个fallbackvalue=1。删除回退属性后,一切正常。该属性已滚动到视图之外,因此确实是我错过的东西。