我有一个 DateControl 来显示、选择或清除日期值。它有三个组件:显示日期的输入字段;通过弹出窗口选择新日期的日历图像按钮;以及清除...
我有一个 DateControl 来显示、选择或清除日期值。它有三个组件:显示日期的输入字段;日历图像按钮,用于通过弹出窗口选择新日期;以及清除图像按钮,用于清除日期值。
该控件具有 DateTime 类型的 DateValue 可绑定属性,定义如下。
public static readonly BindableProperty DateValueProperty = BindableProperty.Create(
propertyName: nameof(DateValue),
returnType: typeof(DateTime),
declaringType: typeof(DateControl),
defaultValue: DateTime.Now,
defaultBindingMode: BindingMode.TwoWay);
public DateTime DateValue
{
get { return (DateTime)base.GetValue(DateValueProperty); }
set { base.SetValue(DateValueProperty, value); }
}
DateValue 属性链接到已转换为字符串的 Entry 字段。
然后我有两个使用 DateControl 的视图。XAML 代码和绑定视图模型属性定义如下,其中转换器来自社区工具包。
第一的:
<controls:DateControl x:Name="dateFilter"
DateValue="{Binding DateFilter, Converter={StaticResource DateTimeOffsetConverter}}"
[ObservableProperty]
private DateTimeOffset _dateFilter = DateTimeOffset.MinValue;
第二:
<controls:DateControl x:Name="dateField" Grid.Row="0" Grid.Column="1"
DateValue="{Binding JournalDate, Converter={StaticResource DateTimeOffsetConverter}}"
[ObservableProperty]
private DateTimeOffset _journalDate = DateTimeOffset.Now;
第一个示例中的 DateFilter 属性会在 DateControl 值改变时更新。然而,第二个示例中的 JournalDate 属性在 DateControl 值改变时永远不会被修改。
我检查了代码中的差异,并对两者进行了调试。我尝试了相同和各种不同的日期值。我临时添加了属性更改/更改处理程序,试图找出原因,但没有成功。