我将尝试将日历的“DisplayDate”绑定,以便该控件在日期更改时发出通知。
以下是我的XAML代码:
<Window x:Class="CalenderControl.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Calendar x:Name="_calendar" DisplayMode="Year" DisplayDate="{Binding Display}"/>
</Grid>
</Window>
以及我的视图模型
public class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string PropertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));
}
private DateTime _displayDate;
public DateTime Display
{
get { return _displayDate; }
set { _displayDate = value; OnPropertyChanged("Display"); }
}
}
案例1:
经过这一切,我已经将数据上下文分配给了视图模型。
public MainWindow()
{
InitializeComponent();
this.DataContext = new ViewModel() { Display = DateTime.Parse("10/10/2015") };
}
绑定后的效果如下所示。
CASE 2:
接着,我尝试在不将DataContext与ViewModel进行赋值的情况下运行。
public MainWindow()
{
InitializeComponent();
// --- Commenting out ---
//this.DataContext = new ViewModel() { Display = DateTime.Parse("10/10/2015") };
}
没有绑定的效果如下:
为什么当我分配DataContext时宽度会变得奇怪?我做错了什么吗?