WPF:水平拉伸日历?

时间:2010-08-13 01:16:21

标签: wpf wpf-controls calendar

有没有办法水平拉伸WPF日历控件?该控件将让我设置Horizo​​ntalAlignment =“Stretch”,但这与将属性设置为“Center”具有相同的效果。它会更改控件的宽度,但显示的日历在控件的中心保持相同的大小。我想将显示的日历拉伸到控件的边缘。

我似乎记得可以使用ViewPort完成,但我找不到任何显示如何操作的内容。谢谢你的帮助。

2 个答案:

答案 0 :(得分:26)

我想你可能在寻找Viewbox

  

定义可以的内容装饰器   伸展和缩放一个孩子   填补可用空间。

如果您将日历作为Viewbox的子项,它将应用ScaleTransform以占用所有可用空间。

<Viewbox>
    <Calendar/>
</Viewbox>

答案 1 :(得分:3)

我也遇到了同样的问题,但我在其他地方找到了答案,但是我将把它留在这里以备将来参考,毕竟这是7年前发布的!

在我的情况下,我想调整DatePicker控件显示的日历大小。

为日历创建样式:

<Style x:Key="styleCalendar" TargetType="{x:Type Calendar}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Calendar}">
                <!-- Wrapping in ViewBox will enlarge calendar of that size.-->
                <Viewbox Height="300">
                    <CalendarItem x:Name="PART_CalendarItem"
                              Background="{TemplateBinding Background}"
                              BorderBrush="{TemplateBinding BorderBrush}"
                              BorderThickness="{TemplateBinding BorderThickness}"/>
                </Viewbox>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

然后只需在DatePicker中调用它:

<DatePicker CalendarStyle="{StaticResource styleCalendar}"/>

注意我只是特定于Viewbox中的高度,这是因为(从我读到的)ViewBox均匀拉伸,因此它将占据两个维度中的最小值。