【问题标题】:WPF | Datagrid - stop autocomplete date columnWPF | Datagrid - 停止自动完成日期列
【发布时间】:2019-09-09 13:45:07
【问题描述】:

我有一个绑定到 Viewmodel 的 Datagrid。 如果我在单元格中输入日期,则会打断用户并打乱输入。

例如:

如果我在一个新的空行中输入 DataGridTextColumn 单元格,它以 01.01.0001(德国日期布局)开头

如果我替换字符串并开始在字段中输入第一个数字和点,它会按预期工作。但是下一个键入的数字将生成一个完整的日期,并将活动年份设置为默认值。

所以我输入 01.4,然后单元格中的输入将更改为 01.04.2019,这很烦人,我不知道如何更改行为。但我需要这样做,因为这使得插入许多日期不在当年范围内的行非常不直观

绑定是一个带有自定义类的 ObservableCollection,该类实现了 OnPropertyChanged 技术。

请帮我找到改变这种行为的正确位置

【问题讨论】:

    标签: c# binding datagrid


    【解决方案1】:

    观察到的行为仅是绑定到 datagridtextcolumn 的 DateTime。没有简单或直观的解决方案来改变这种行为。 我的解决方案是使用 DataGridTemplateColumn,此控件不会以可以想象的最荒谬和无用的方式自动完成您的输入。

    旧 Xaml:

    <DataGridTextColumn Binding="{Binding Datum, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat=d}" Header="Aktionsdatum" />
    

    新 Xaml:

    <DataGridTemplateColumn Header="Pick a Date">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Datum, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
        <DataGridTemplateColumn.CellEditingTemplate>
            <DataTemplate>
                <DatePicker SelectedDate="{Binding Datum, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
            </DataTemplate>
        </DataGridTemplateColumn.CellEditingTemplate>
    </DataGridTemplateColumn>
    

    【讨论】:

      猜你喜欢
      • 2014-03-12
      • 1970-01-01
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      相关资源
      最近更新 更多