【发布时间】:2021-04-14 07:32:55
【问题描述】:
我遇到了 WPF DatePicker 的问题。
表单上有两个DatePicker 控件,基于StaticResource DateTheme。 DateTheme 看起来像:
<ResourceDictionary>
<Style TargetType="{x:Type DatePicker}" x:Key="DateTheme" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DatePicker}">
<DatePicker DisplayDate="{TemplateBinding Property=DisplayDate}" SelectedDate="{TemplateBinding Property=SelectedDate}" Background="#353340" Foreground="Black"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
DatePicker 看起来像:
<DatePicker x:Name="dtpFrom" Style="{StaticResource DateTheme}" />
<DatePicker x:Name="dtpTo" Style="{StaticResource DateTheme}" />
DateTheme 包含在 app.xaml 中:
<ResourceDictionary Source="DateTheme.xaml" />
但在选择新日期并单击按钮后,代码中仍会使用旧日期。 SelectedDate 不会在控件中更新。
这里SelectedDate 仍然是旧日期,而新选择的日期显示在屏幕上:
if (dtpFrom.SelectedDate > dtpTo.SelectedDate)
在标准DateTimePicker 控件中选择新日期时如何实际更改SelectedDate?
【问题讨论】:
-
您要解决的实际问题是什么?根据您的描述,您似乎希望两个
DatePickers 都显示相同的日期,但没有任何上下文,很难猜出合适的解决方案。 -
问题是在选择新日期并单击按钮后,您会在代码中获得旧日期。 SelectedDate 不会在控件中更新。
-
为什么是
TemplateBinding而不是Binding?
标签: .net wpf xaml controltemplate