繁体   English   中英

视图中的值 model 未更新回 MAUI 中的 UI

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM