【问题标题】:New properties from a second partial class not binding第二个部分类的新属性未绑定
【发布时间】:2017-08-29 09:20:25
【问题描述】:

我有一个来自 EntityFramework 的部分类,称为权重

 public partial class Weights
{
    public long WeightID { get; set; }
    public Nullable<long> ClientID { get; set; }
    public Nullable<long> SiteID { get; set; }
    public Nullable<long> DriverID { get; set; }
    public Nullable<long> CarID { get; set; }
    public Nullable<double> Weight1 { get; set; }
    public Nullable<double> Weight2 { get; set; }
    public bool IsCancel { get; set; }
    public bool IsEdit { get; set; }
    public bool IsManual { get; set; }
    public Nullable<System.DateTime> DateTime1 { get; set; }
    public Nullable<System.DateTime> DateTime2 { get; set; }
    public Nullable<long> MaterialID { get; set; }
    public bool IsClosed { get; set; }
    public string Waybill { get; set; }
    public Nullable<double> Netto { get; set; }
    public Nullable<bool> Passage { get; set; }

    public virtual Cars Cars { get; set; }
    public virtual Clients Clients { get; set; }
    public virtual Drivers Drivers { get; set; }
    public virtual Materials Materials { get; set; }
    public virtual Sites Sites { get; set; }
}

现在我创建了另一个部分权重类,我实现了 INotifyPropertyChanged 并添加了 datetimefrom 和 datetimeto 属性以及属性更改

public partial class Weights : INotifyPropertyChanged
{
    private Nullable<System.DateTime> DateTimeFrom;
    public Nullable<System.DateTime> L_DateTimeFrom
    {
        get { return DateTimeFrom; }
        set
        {
            DateTimeFrom = value;
            NotifyPropertyChanged("DateTimeFrom");
        }
    }

    private Nullable<System.DateTime> DateTimeTo;
    public Nullable<System.DateTime> L_DateTimeTo
    {
        get { return DateTimeTo; }
        set
        {
            DateTimeTo = value;
            NotifyPropertyChanged("DateTimeTo");
        }
    }

    #region "PropertyEvent Change"
    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(String info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }
    #endregion
}

我创建了一个带有权重过滤器属性的视图模型,还实现了 INotifyPropertyChanged

public class ClosedWeightsViewModel : INotifyPropertyChanged
{
    private Weights m_filter;
    public Weights Filter
    {
        get { return m_filter; }
        set
        {
            m_filter = value;
            NotifyPropertyChanged("Filter");
        }
    }

    #region "PropertyEvent Change"
    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(String info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }
    #endregion

}

在 xaml 中,我创建了 2 个日期选择器并将它们绑定到 datetimefrom/to

<StackPanel Orientation="Vertical" VerticalAlignment="Bottom">
                <DatePicker x:Name="dateForm" SelectedDate="{Binding Filter.DateTimeFrom, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" SelectedDateChanged="DatePicker_SelectedDateChanged"/>
                <DatePicker x:Name="dateTo" SelectedDate="{Binding Filter.DateTimeTo, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" SelectedDateChanged="DatePicker_SelectedDateChanged"/>
            </StackPanel>   

但是当我选择日期时它没有约束力。 其他属性的绑定效果很好(CarID、DriverID 等)

我错过了什么?

【问题讨论】:

  • 属性名称是 L_DateTimeFrom,而不是 DateTimeFromDateTimeFromprivatefield,因此无法用于 Binding。 NotifyPropertyChanged("DateTimeFrom"); 也应该是 NotifyPropertyChanged("L_DateTimeFrom");

标签: c# wpf entity-framework xaml


【解决方案1】:

您的属性被命名为L_DateTimeFromL_DateTimeTo。您应该重命名它们:

private Nullable<System.DateTime> _dateTimeFrom;
public Nullable<System.DateTime> DateTimeFrom
{
    get { return _dateTimeFrom; }
    set
    {
        _dateTimeFrom = value;
        NotifyPropertyChanged("DateTimeFrom");
    }
}

private Nullable<System.DateTime> _dateTimeTo;
public Nullable<System.DateTime> DateTimeTo
{
    get { return _dateTimeTo; }
    set
    {
        _dateTimeTo = value;
        NotifyPropertyChanged("DateTimeTo");
    }
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-28
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多