在XAML中怎么说:默认宽度和高度,例如TextBox

Edw*_*uay 10 wpf xaml textbox font-size autosize

所以我从HTML的角度来看WPF.

我只想TextBox在我的窗口上放一个这样的:

<Grid>
    <TextBox Name="theName" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

事实证明,那TextBox是巨大的,涵盖了整个窗口.(!)

好吧,这不是我想要的,但我不想定义确切的大小,因为我知道Height并且Width应该灵活,所以我尝试:

<TextBox Name="theName" Width="Auto" Height="Auto"/>
Run Code Online (Sandbox Code Playgroud)

一样.所以我尝试:

<TextBox Name="theName" 
    HorizontalAlignment="Stretch" 
    VerticalAlignment="Stretch"/>
Run Code Online (Sandbox Code Playgroud)

一样.所以我只是硬编码大小:

<TextBox Name="theName" Width="100" Height="20"/>
Run Code Online (Sandbox Code Playgroud)

我所知道的并不是WPF中的一个好的编程实践.

那么,你如何告诉TextBox"显示正在使用的字体大小的默认大小"?

Ste*_*ard 10

你可以进一步了解布莱恩的例子.通过指定不伸展的特定对齐并进一步约束TextBox,使其不会超出特定大小.例如:

<Grid x:Name="LayoutRoot">
        <TextBox HorizontalAlignment="Left" VerticalAlignment="Top" Text="TextBox" TextWrapping="Wrap" 
        MinWidth="15" MinHeight="20" MaxWidth="500" MaxHeight="50"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

您可以通过在Grid中设置行/列并以各种方式约束它们来进一步实现它.当您来自HTML背景时,请将其视为使用表格来控制布局.请记住,您还可以嵌套其他容器对象(即StackPanels,WrapPanels,其他网格等).

XAML和WPF/Silverlight控件的挑战在于它们非常灵活,因此您必须掌握所有选项以及它们如何影响布局.

祝好运.我现在正在经历同样的事情.


Ste*_*fan 6

使用不同的容器.网格总是拉伸其子控件以填充网格单元格.

您可以使用例如仅在一个方向上拉伸其控件的stackpanel.