我正在使用自定义日期选择器,我正在尝试将dateformat更改为仅通过依赖项属性显示Year。经过一些实验后,我得到Nullable object must have a value
例外。我使用下面的代码:
public bool YearOnly
{
get { return (bool)this.GetValue(YearOnlyProperty); }
set { this.SetValue(YearOnlyProperty, value); }
}
public static readonly DependencyProperty YearOnlyProperty =
DependencyProperty.Register("YearOnly",
typeof(bool),
typeof(CustomizableDatePicker),
new FrameworkPropertyMetadata(false, new PropertyChangedCallback(OnYearOnlyChanged)));
private static void OnYearOnlyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
CustomizableDatePicker control = (CustomizableDatePicker)d;
control.SelectedDate = Convert.ToDateTime(control.SelectedDate.Value.ToString("yyyy"));
}
更改日期格式,显然它不起作用。
我在DatePicker
中使用它:YearOnly="True"
。
另一方面,使用下面的Style
格式化DatePicker
伟大的:
<Style TargetType="{x:Type DatePickerTextBox}">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<TextBox x:Name="PART_TextBox"
Text="{Binding Path=SelectedDate, StringFormat='yyyy',
RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
有没有办法让这项工作?感谢。
答案 0 :(得分:0)
经过数小时测试可能的解决方案后,我得出结论:DatePicker
永远不会接受只有DateTime
的{{1}}。我(简称)实现了@Clemens建议希望在某个时刻为接受YearOnly Year
的{{1}}找到解决方案的解决方案。无论如何,我使用的代码对任何感兴趣的人都是如此。如果有人对我的问题有其他解决方案,请添加对此问题的答案。
DatePicker
.................
DateTime