2

由于 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通过解析月、日和年来设置值。

4

2 回答 2

4

如果你想绑定到一个属性(例如 use 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}"/>
于 2013-03-02T23:26:25.613 回答
2

如果你想绑定一个值,你dateVal必须在dateValDependancyPropertyDatePicker.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));
于 2013-03-02T23:29:23.013 回答