gpt4 book ai didi

c# - 无法将 CalendarDatePicker 绑定(bind)到 Xaml UWP 中的模型

转载 作者:行者123 更新时间:2023-12-05 08:42:23 25 4
gpt4 key购买 nike

我在包含 datetime 属性的共享 PCL(适用于 android 和 uwp 应用程序)中有模型类:

public class Meter {
public int meter_value {get; set; }
public DateTime meter_start { get; set; }
public DateTime meter_end { get; set; }
... other int and string properties
}

在 MainPage.cs 中我有

public Meter _meter;
public MainPage()
{
this.InitializeComponent();
_meter = new Meter();
}

我正在尝试使用以下代码将其绑定(bind)到 xaml 控件:

   <TextBox 
Text="{x:Bind _meter.meter_value, Mode=TwoWay}">

<CalendarDatePicker
Name="meter_start"
Date="{x:Bind _meter.meter_start, Mode=TwoWay}"
DateFormat="{}{day.integer}/{month.integer}/{year.full}" >
</CalendarDatePicker>

此代码产生编译时错误:无效的绑定(bind)路径“_meter.meter_start”:无法在没有转换器的情况下将类型“System.DateTime”绑定(bind)到“System.Nullable(System.DateTimeOffset)”

当我将 x:Bind 更改为 Binding 时,应用程序编译,但我的模型中 meter_start 属性的值为 0001/01/01。

谁能帮我解决这个问题?

最佳答案

正如错误所说,您需要一个转换器 - CalendarPicker.Date类型为 Nullable<DateTimeOffset>你的属性(property)是DateTime .这是我测试过的一个简单示例 - 在代码中:

public class TimeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return new DateTimeOffset(((DateTime)value).ToUniversalTime());

}

public object ConvertBack(object value, Type targetType, object parameter, string language)
{
return ((DateTimeOffset)value).DateTime;
}
}

在 XAML 中:

<Page.Resources>
<local:TimeConverter x:Key="TimeConverter"/>
</Page.Resources>

... later
<CalendarDatePicker Name="meter_start" Date="{x:Bind _meter.meter_start, Mode=TwoWay, Converter={StaticResource TimeConverter}}"
DateFormat="{}{day.integer}/{month.integer}/{year.full}"/>

您可能会考虑实现 INotifyPropertyChanged并引发 PropertyChanged 事件,如果您还更改了 _meter来自某处的代码。

另请注意,当您处理 DateTimeDateTimeOffset 时,您需要注意适当的转换(时区等)。您会找到更多信息 at this SO question .

关于c# - 无法将 CalendarDatePicker 绑定(bind)到 Xaml UWP 中的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41962310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com