2011-04-12 108 views
4

我確定有一個簡單的解釋,爲什麼發生這種情況,但似乎無法找到它。從下面的代碼爲什麼我的文本框超出了窗口?我會想,因爲我已經將它們的寬度設置爲等於窗口的大小,它們會完美地對齊......但是運行這個並且顯然不是這種情況。我錯過了什麼?什麼是設置寬度的正確方法?wpf xaml面板尺寸

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="300" Width="200"> 
    <StackPanel Orientation="Horizontal"> 
     <TextBox Width="100">Hello</TextBox> 
     <TextBox Width="100" TextAlignment="Right">World</TextBox> 
    </StackPanel> 
</Window> 

回答

2

窗口的寬度包括諸如邊框之類的東西,高度包括諸如標題欄之類的東西。所以在設置寬度/高度時需要考慮這些因素。您可以使用窗口上的SizeToContent選項來使其大小適合文本框。

像:

<Window ... SizeToContent="Width" 

或者你可以用一個網格替換您的StackPanel給Window的可用寬度的每一個文本框半:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition /> 
     <ColumnDefinition /> 
    </Grid.ColumnDefinitions> 

    <TextBox Grid.Column="0">Hello</TextBox> 
    <TextBox Grid.Column="1" TextAlignment="Right">World</TextBox> 
</Grid> 
+0

所以我在假設正確,如果你想保持最佳寬度和高度的控件的大小。如果該控件放置在主窗口中,那麼主窗口應該只設置SizeToContent =「WidthAndHeight」? – poco 2011-04-13 03:37:05

+0

@poco - 它真的取決於:-)你當然可以使用Grid並在ColumnDefinitions或TextBoxes *上設置MinWidth,並使用SizeToContent選項。但這取決於你要做什麼樣的佈局。 – CodeNaked 2011-04-13 11:16:13