2010-08-13 131 views
4

有沒有辦法水平拉伸WPF日曆控件?該控件將讓我設置Horizo​​ntalAlignment =「Stretch」,但這與將屬性設置爲「Center」具有相同的效果。它會更改控件的寬度,但顯示的日曆在控件的中心保持相同的大小。我想將顯示的日曆伸展到控件的邊緣。WPF:水平拉伸日曆?

我似乎記得它可以用ViewPort完成,但我找不到任何顯示如何操作的東西。謝謝你的幫助。

回答

22

我想你可能會尋找Viewbox

定義內容裝飾,可以 拉伸和縮放的任何一個孩子 填充可用空間。

如果您將日曆設置爲Viewbox的子項,它將應用ScaleTransform以使其佔用所有可用空間。

<Viewbox> 
    <Calendar/> 
</Viewbox> 
+0

謝謝!注意其他用戶 - 視圖框水平和垂直伸展。它不能僅在一個方向上拉伸,例如水平。 – 2010-08-13 03:57:50

+1

5歲的答案仍然完美。謝謝! – 2015-12-02 16:26:08

1

我也面臨着同樣的問題,但我找到了答案其他地方不完整的方式,所以我將離開這裏以供將來參考,畢竟這被張貼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}"/> 

請注意,我只specificy高度的視框中,那是因爲(從我讀)ViewBox均勻拉伸,所以它將佔用兩個維度中的最小值。