2011-04-12 118 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