[英]values in the view model not updating back to the UI in MAUI
我正在尝试从日期选择器中获取两个日期,并将它们之间的天数计算为 integer,并将其更新回 xaml 文件中的 label,
我正在使用社区工具包在视图 model 中生成代码。但问题是日期的差异没有更新回 UI。
xaml 档案
<DatePicker x:Name="fromdate" Date="{Binding Date1}" FontAttributes="Bold" FontSize="Medium" Grid.Column="0" Grid.Row="1" />
<DatePicker x:Name="todate" Date="{Binding Date2}" FontAttributes="Bold" FontSize="Medium" Grid.Row="1" Grid.Column="1"/>
查看Model
public partial class AddLeaveViewModel : ObservableObject
{
[ObservableProperty]
DateTime date1 = DateTime.Today;
[ObservableProperty]
DateTime date2 = DateTime.Today;
[ObservableProperty]
int nodays;
[RelayCommand]
public async void SubmitClicked()
{
try
{
TimeSpan difference = Date2 - Date1;
nodays = difference.Days;
}
catch(Exception e)
{
Console.WriteLine(e);
}
}
}
我期望使用 communitytoolkit 将日期的差异实时返回到 UI
阅读: https://learn.microsoft.com/en-us/do.net/csharp/fundamentals/coding-style/coding-conventions
属性 A 具有字段 _a,而不是 a。
编辑:为了澄清这一点,当您注释您的 nodays 字段时,在自动生成的代码中您拥有属性 Nodays。
Nodays 属性的设置器使用魔术代码使您的绑定工作。 直接设置字段没有这样的效果。
该字段的正确写法是_nodays。 然后使用自动生成的属性 Nodays。
您可以尝试替换代码:
nodays = difference.Days;
和:
Nodays = difference.Days;
因此, SubmitClicked
的代码将如下所示:
[RelayCommand]
public async void SubmitClicked()
{
try
{
TimeSpan difference = Date2 - Date1;
//nodays = difference.Days;
Nodays = difference.Days;
}catch(Exception e){
Console.WriteLine(e);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.