WPF:如何将日历水平拉伸?

8
有没有一种方法可以水平拉伸WPF日历控件?该控件允许我设置HorizontalAlignment =“Stretch”,但这与将属性设置为“Center”的效果相同。它改变了控件的宽度,但显示的日历仍然保持在控件的中心位置。我想将显示的日历拉伸到控件的边缘。
我记得可以使用ViewPort来完成,但我找不到任何显示如何完成此操作的内容。感谢您的帮助。
2个回答

35

我想你可能正在寻找Viewbox

定义了一个内容装饰器,可以拉伸和缩放单个子元素以填充可用空间。

如果将日历设置为Viewbox的子元素,则会应用ScaleTransform以使其占用所有可用空间。

<Viewbox>
    <Calendar/>
</Viewbox>

谢谢!其他用户请注意——Viewbox在水平和垂直方向上都会拉伸。它不能只在一个方向上拉伸,比如水平方向。 - David Veeneman

4

我也遇到了同样的问题,但我在别处找到了不完整的答案,所以我会把它留在这里供将来参考,毕竟这是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 CalendarStyle="{StaticResource styleCalendar}"/>

注意我只在ViewBox中指定了高度,因为(据我所读)ViewBox会均匀地拉伸,因此它将采用两个尺寸中最小的尺寸。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接