【发布时间】:2016-05-11 13:20:34
【问题描述】:
我有一个 DatePicker 的 WPF 样式,其中 DatePicker 的日历也被设置了样式。下面就来看看吧:
<Style TargetType="{x:Type DatePicker}" x:Key="datePickerGeneralStyle" BasedOn="{StaticResource {x:Type DatePicker}}">
<Setter Property="TextElement.FontSize" Value="{StaticResource 24}" />
<Setter Property="VerticalAlignment" Value="{StaticResource Center}" />
<Setter Property="VerticalContentAlignment" Value="{StaticResource Center}" />
<Setter Property="DatePicker.CalendarStyle">
<Setter.Value>
<Style TargetType="{x:Type Calendar}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Calendar}">
<Viewbox Height="{Binding DatePicker.Width}" Width="{Binding DatePicker.Width}">
<CalendarItem x:Name="PART_CalendarItem"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"/>
</Viewbox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Setter.Value>
</Setter>
</Style>
现在查看上面代码中的以下行:
<Viewbox Height="{Binding DatePicker.Width}" Width="{Binding DatePicker.Width}">
现在我想让这种风格通用。因此,当我声明一个 DatePicker 并将其样式属性设置为 datePickerGeneralStyle 时,DatePicker 的日历应该获得与 Datepicker 的宽度相同的宽度。即使没有提到日期选择器的宽度,我也想要这种行为,我的意思是日期选择器应该使用容器中的可用空间或我们所说的自动宽度。
【问题讨论】:
-
这个 {Binding DatePicker.Width} 不起作用,我想你误解了绑定在模板中是如何工作的