【发布时间】: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,而不是DateTimeFrom。DateTimeFrom是 private 和 field,因此无法用于 Binding。NotifyPropertyChanged("DateTimeFrom");也应该是NotifyPropertyChanged("L_DateTimeFrom");
标签: c# wpf entity-framework xaml