Wpf 水平拉伸日历?

Wpf 水平拉伸日历?,wpf,wpf-controls,calendar,Wpf,Wpf Controls,Calendar,有没有办法水平拉伸WPF日历控件?控件将允许我设置HorizontalAlignment=“Stretch”,但这与将属性设置为“Center”具有相同的效果。它更改控件的宽度,但显示的日历在控件中心保持相同的大小。我想将显示的日历拉伸到控件的边缘 我似乎记得它可以用一个视口来完成,但我找不到任何显示如何完成的东西。谢谢您的帮助。我想您可能正在寻找: 定义一个可以 将单个孩子拉伸并缩放到 填满可用的空间 如果将日历设置为Viewbox的子项,它将应用ScaleTransform以占用所有可用空间

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


我似乎记得它可以用一个视口来完成,但我找不到任何显示如何完成的东西。谢谢您的帮助。

我想您可能正在寻找:

定义一个可以 将单个孩子拉伸并缩放到 填满可用的空间

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

<Viewbox>
    <Calendar/>
</Viewbox>

我也面临着同样的问题,但我在其他地方找到了不完整的答案,所以我将把它留在这里供将来参考,毕竟这是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拉伸均匀,因此它将采用两个维度中最小的一个。

谢谢!注意:对于其他用户,Viewbox可以水平和垂直拉伸。它不能只向一个方向拉伸,例如水平拉伸。