【问题标题】:Wpf - Combobox Binding to a DateTime ArrayListWpf - 组合框绑定到 DateTime ArrayList
【发布时间】:2010-01-18 09:44:02
【问题描述】:

我有一个静态的ArrayList DateTimes

<Window.Resources>
    <col:ArrayList x:Key="startHours">
        <sys:DateTime>0:00</sys:DateTime>
        <sys:DateTime>0:30</sys:DateTime>
        <!-- .... -->
    </col:ArrayList>
</Window.Resources>

我想用hour:minute 格式化日期填充一个组合框,所以我这样做了

<ComboBox x:Name="cmbFinish" 
          ItemsSource="{Binding Source={StaticResource startHours}}" 
          ItemStringFormat="t"/>

项目的格式正常 - hour:minute,但是当我选择一个项目时,cmbFinish.Value 具有默认的 DateTime.ToString() 格式。我错过了什么?我需要cmbFinish.Value 采用hour:minute 格式。

【问题讨论】:

    标签: c# .net wpf data-binding combobox


    【解决方案1】:

    我在 ComboBox 类中没有看到 Value 属性。您是否在考虑 SelectedValue 属性? 在这种情况下,将其值转换为 DateTime (DateTime)cmbFinish.SelectedValue,然后您可以将其转换为所需的字符串格式。

    【讨论】:

    • 谢谢你的回答,你是对的,我的意思是cmvFinish.SelectedValue。对不起,如果我没有说清楚,但我不明白 (DateTime)cmbFinish.SelectedValue 的意思并转换它..
    • 如果您的组合框是可编辑的,则 SelectedValue 属性可能包含 DateTime 或 null。您必须在将 SelectedValue 转换为 DateTime 之前对其进行检查。在这两种情况下,您都可以读取 ComboBox.Text 值来读取键入的文本。
    【解决方案2】:

    对不起...我的组合框有一个IsEditable(我忘了将它添加到问题中)属性设置为True。根据social msdn 在这种情况下.SelectedValue 将获取源值,即使它应用了转换器。

    如果IsEditable 属性设置为False,则Items 格式和.SelectedValue 格式没有区别。现在我认为最好的方法是绑定一个转换成字符串的ArrayList。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-18
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多