由于Windows8还没有充实的DatePicker,我决定按照自己的一些示例进行操作。
本身它工作正常,但现在我有日期,我想预先填充DatePicker。
我在下面的DatePicker.xaml.cs文件中创建了一个属性:
public DateTime dateVal
{
get
{
return m_dateVal;
}
set
{
m_dateVal = value;
}
}
然后在显示DatePicker控件的页面中,我尝试绑定到属性:
<dp:DatePicker Foreground="Black" Height="100" Margin="10,25" Grid.Column="1" VerticalAlignment="Center" BorderBrush="Black" BorderThickness="1" dateVal="{Binding repairInfoSingle.repairDate, Mode=TwoWay}"/>
但是,进入DatePicker.xaml.cs文件后,dateVal属性从未填充我传入的日期。
然后我在输出窗口中出现错误:
WinRT信息:无法分配给属性 'aG.Common.DatePicker.dateVal'。 [行:125位置:170]
我希望传递日期,然后在构造函数中我可以通过解析月,日和年来设置SelectedIndex
值。
答案 0 :(得分:4)
如果要绑定到属性(例如,使用DateVal={Binding ...}
) - DateVal不能是常规CLR属性。
您需要将其更改为 DependencyProperty
所以在你的例子中:
public DateTime DateVal
{
get { return (DateTime) GetValue(DateValProperty); }
set { SetValue(DateValProperty, value); }
}
public static readonly DependencyProperty DateValProperty =
DependencyProperty.Register("DateVal", typeof(DateTime), typeof(DatePicker),
new PropertyMetadata(DateTime.MinValue));
现在它应该像你想要的那样正常工作:
<dp:DatePicker DateVal="{Binding repairInfoSingle.repairDate, Mode=TwoWay}"/>
答案 1 :(得分:2)
如果您想将值绑定到dateVal
,则必须在dateVal
DependancyProperty
DatePicker.xaml.cs
public DateTime DateVal
{
get { return (DateTime)GetValue(DateValProperty); }
set { SetValue(DateValProperty, value); }
}
public static readonly DependencyProperty DateValProperty =
DependencyProperty.Register("DateVal", typeof(DateTime), typeof(DatePicker), new PropertyMetadata(DateTime.MinValue));
{{1}}