【问题标题】:Datepicker Binding Xamarin FormsDatepicker 绑定 Xamarin 表单
【发布时间】:2018-12-16 18:12:51
【问题描述】:
<DatePicker Date="date" Format="d MMM yyyy" HorizontalOptions="EndAndExpand" x:Name="date"/>

通过在我的 xaml 代码中包含那行代码。创建新数据时如何将日期设置为现在?

【问题讨论】:

  • 在页面的 OnAppearing 中可以设置 date.Date= DateTime.Today。
  • 是的,但问题是当我打开一个已添加且已具有特定日期的对象时。执行此方法将更改对象的原始日期

标签: xamarin.forms datepicker


【解决方案1】:

您可以将Date 属性更改为如下内容:Date="{Binding MyDate}",然后在您的代码隐藏中将视图模型分配给BindingContext 属性。例如:

public class MyViewModel
{
    public DateTime MyDate { get; set; }
}

在您的页面中:

public class MyPage
{
    public MyPage()
    {
        InitializeComponent();

        var viewModel = new MyViewModel();
        viewModel = DateTime.Now;

        BindingContext = viewModel;
    }
}

或者,如果您不需要使用视图模型或 MVVM(我强烈推荐),您可以直接从您的代码隐藏中进行设置。因为您为 DatePicker 提供了一个 x:Name 属性,所以您可以通过该名称引用它。

public class MyPage
{
    public MyPage()
    {
        InitializeComponent();

        date.Date = DateTime.Now;
    }
}

【讨论】:

  • 好主意,但问题是当我打开一个已添加且已具有特定日期的对象时。执行此方法将更改对象的原始日期
  • 我不确定你想达到什么目的
  • 我正在尝试 if(date == null){ 将代码放在这里..} 没有任何反应
  • 如果我已经在 Xaml 中 DatePicker 的日期值中绑定了怎么办?
  • 用你想要初始显示的值初始化MyDate变量
【解决方案2】:

你可以用两种方式定义它

  1. 使用“x:Name”,您可以在 XAML.cs 中定义日期。
  2. 使用“日期”的 Binding 属性,您可以在 ViewModel 类中定义日期

在您的情况下 xaml.cs

date.Date = DateTime.Now;

【讨论】:

  • 如果对象中已经有日期值呢?它将覆盖该值。
  • 默认情况下,即使您没有将 Date 的值设置为 DateTime.Now,它也会将默认值设置为 DateTime.Now。如果您设置不同的日期,它将覆盖 DateTime.now 值。
  • public DateTime dateModelView { get => Model.date == null ?日期时间。现在:模型。日期;设置 { Model.date = value; NotifyPropertyChanged("日期"); } }
猜你喜欢
  • 1970-01-01
  • 2016-10-10
  • 2018-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
  • 2016-09-08
相关资源
最近更新 更多