【问题标题】:Converter for ComboBox in Silverlight 4Silverlight 4 中的 ComboBox 转换器
【发布时间】:2011-05-05 16:37:34
【问题描述】:

我正在尝试选择一个 ComboBox 项来设置数据库中保存的值。

在数据库中保存“I”或“D”,转换器返回“Direct”或“Indirect”。

ComboBox 有两个具有“Direct”和“Indirect”值的 ComboBoxItem。

这是我认为可行的代码:

<ComboBox Name="cbMode" 
SelectedValue="{Binding Context.mode, Converter={StaticResource ModeConverter}, Mode=TwoWay}" >
       <ComboBoxItem Content="Direct" />
       <ComboBoxItem Content="Indirect" />
</ComboBox>

我知道它正在返回“间接”,但它没有被选中。

当我尝试更改组合中的选定项目时,它不起作用,因为它无法从 ComboBoxItem 转换为字符串,所以我认为这是双向的问题。

我应该如何尝试?我必须用数字转换器制作 SelectedIndex 吗?

提前致谢。

【问题讨论】:

    标签: c# .net silverlight mvvm


    【解决方案1】:

    http://johnpapa.net/binding-to-silverlight-combobox-and-using-selectedvalue-selectedvaluepath-and-displaymemberpath

    创建一个表示列中“事物”的对象(是模式吗?),然后使用上面博客文章中的公式绑定到它。 Mode 类将有一个表示类型的属性。

    如果 Context.mode 的值为 null,我遇到了绑定到常规 ComboBox 控件的问题。它打破了束缚。像 Tereik 的第 3 部分组合框可以解决这个问题。运气好的话,SL5 会解决这个问题。

    【讨论】:

    • Mode 是 datacontext 对象(字符串)中的一个属性。我认为问题在于组合框中的项目类型......
    【解决方案2】:

    我通常会尝试在我的数据库访问层中拦截此类问题。您在应用程序开发方面受到数据库的限制。当您获取数据时,我会从 I/D 转换为间接/直接。当你设置你的数据时,我会反过来。允许您根据有意义的内容编写您的应用程序。

    有些人称之为以应用程序为中心的编码,它让我的生活变得非常轻松。

    【讨论】:

    • 我认为这在任何情况下都不适用(这是我的情况)。无论如何感谢您的回复。
    【解决方案3】:

    最后我使用了一个不太酷的解决方案(但比其他选项更好)。

    我以这种方式绑定所选项目:

    <ComboBox Name="cbMode" 
    SelectedIndex="{Binding Context.mode, Converter={StaticResource ModeConverter}, Mode=TwoWay}" >
           <ComboBoxItem Content="Direct" />
           <ComboBoxItem Content="Indirect" />
    </ComboBox>
    

    如果是 D,则将 Converter 更改为返回 0,如果是 I,则返回 1。

    如果您找到更好的解决方案,请告诉我 ;-)。

    【讨论】:

    • 这里的问题是你的用户界面是完全静态的。如果您需要能够向“模式”添加第三种状态怎么办?我建议至少将键/值对的 ObservableCollection 添加到您的 VM 中,并将 ItemsSource 绑定到 John Pappa 博客链接中所示的方式。然后,您不需要转换器,并且如果您需要进一步将 ObservableCollection 与 VM 分开以便更好地重用,则可以将 ObservableCollection 移动到 PickListProvider 类型的对象中。
    猜你喜欢
    • 2012-03-27
    • 2012-03-10
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    相关资源
    最近更新 更多