2016-02-22 52 views
1

我正在製作一個工具欄。我希望窗口的寬度等於按鈕的總寬度。 StackPanel對於這項工作來說看起來非常完美,因爲它將所有內容都排列起來,但不會拉伸。如何獲取堆疊面板的大小以適應堆疊的控件?

<Window Width="auto"> 
    <StackPanel Orientation="Horizontal" Width="auto"> 
     <Button /> 
     <Button /> 
    </StackPanel> 
    </Window> 

如何使這項工作?

回答

2

我找到了一個非常簡單的解決方案!幾乎每個人(我一直在尋找萬噸頁)提出切換控制類型什麼的要複雜得多,但事實上,它的更簡單:

<Window   SizeToContent="Width" 

這是唯一需要改變的。

此位的來源:https://stackoverflow.com/a/2317914/971583,排名第二的問題答案,這對我來說似乎是更好的答案。

+0

但是,這個回覆並不是拉伸你的按鈕:) – StepUp

+0

誰說拉伸按鈕的任何事情。我想要容器調整大小。 –

0

改爲使用帶有網格的網格。

<Grid HorizontalAlignment="Stretch"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
    <Button /> 
    <Button Grid.Column="1" /> 
    <Button Grid.Column="2" /> 
    <Button Grid.Column="3" /> 
</Grid> 
+1

我不喜歡網格,因爲我必須把所有這些列定義。如果我添加更多控件,我需要更新所有列號。在我看來,當你有一個具有多行控件的矩形時,Grid很有用。單行似乎沒有意義。 –

0

您可以使用UniformGrid而不是StackPanel使窗口的寬度等於按鈕的總寬度。

<UniformGrid Margin="10" Rows="1" HorizontalAlignment="Right" 
      VerticalAlignment="Bottom"> 
    <Button Grid.Column="0" Content="No" FontSize="18" Margin="5" Padding="6,3"/> 
    <Button Grid.Column="1" Content="Yes, Absolutely" Margin="5" Padding="6,3"/> 
    <Button Grid.Column="2" Content="Maybe" Margin="5" Padding="6,3"/> 
</UniformGrid> 

的UniformGrid提供eacg細胞是相同的高度和相同的寬度。這是你想要的,因爲你可以避免手動設置按鈕大小。

更新:

我建議不使用的StackPanel。即使你讓Stackpanel填充它的父項,其子項仍然「堆疊」並且不會填滿Stackpanel。

+0

這不會是統一的。 –

+0

re,編輯:我不想讓StackPanel填充父項。我試圖讓父母增長/縮小以適應StackPanel。 –

+0

@AlanBaljeu你找到了嗎? – StepUp