wpf xaml面板尺寸
问题描述:
我确定有一个简单的解释,为什么发生这种情况,但似乎无法找到它。从下面的代码为什么我的文本框超出了窗口?我会想,因为我已经将它们的宽度设置为等于窗口的大小,它们会完美地对齐......但是运行这个并且显然不是这种情况。我错过了什么?什么是设置宽度的正确方法?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>
答
窗口的宽度包括诸如边框之类的东西,高度包括诸如标题栏之类的东西。所以在设置宽度/高度时需要考虑这些因素。您可以使用窗口上的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>
所以我在假设正确,如果你想保持最佳宽度和高度的控件的大小。如果该控件放置在主窗口中,那么主窗口应该只设置SizeToContent =“WidthAndHeight”? – poco 2011-04-13 03:37:05
@poco - 它真的取决于:-)你当然可以使用Grid并在ColumnDefinitions或TextBoxes *上设置MinWidth,并使用SizeToContent选项。但这取决于你要做什么样的布局。 – CodeNaked 2011-04-13 11:16:13