2013-04-02 110 views
1

所以我发布了这个问题,但建议的答案似乎并没有工作。所以再次重新发布它,XAML的简单版本。我们通常期望TextBox在窗口大小调整时调整大小。我想要“其他方式”的行为。占据整个窗口区域的文本框。 TextBox随着尺寸的增大/缩小而变化。请以这种方式提出建议。WPF,窗口调整大小作为文本框大小

<Window> 
    <Grid HorizontalAlignment="Stretch"> 
     <TextBox Width="Auto">    
     </TextBox> 
    </Grid> 
</Window> 

回答

2
<Window x:Class="MiscSamples.SizeToContent" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="SizeToContent" SizeToContent="WidthAndHeight" ResizeMode="NoResize"> 
    <Grid HorizontalAlignment="Stretch"> 
     <TextBox Width="Auto" AcceptsReturn="True"> 
     </TextBox> 
    </Grid> 
</Window> 

请注意,您必须包括ResizeMode="NoResize",因为如果用户手动调整窗口的大小,行为都将丢失。

+0

或者你当然可以使用内容功能的大小,可以使用任何一种方式,但你可能会发现一个更适合你(例如,绑定版本,特别是如果你想在某一点上某种形式的值转换器) – Clint

+0

SizeToContent =“WidthAndHeight”完成这项工作。没有其他必要的。感谢HighCore :) http://stackoverflow.com/questions/15774854/wpf-window-resizing-as-textbox-resizes/15774953?noredirect=1#15774953 – armanali

+0

@armanali看我的编辑。 –

-1

你可以给文本框中的名称,然后在窗口宽度绑定到文本框的大小,例如:

<Window Width="{Binding ElementName=txtbox, Path=ActualWidth}"> 
    <Grid HorizontalAlignment="Stretch"> 
     <TextBox x:Name="txtbox" Width="Auto">    
     </TextBox> 
    </Grid> 
</Window> 

我不包括上浆文本框的任何代码(我假设您将以编程方式执行此操作)但使用此XAML时,窗口应根据文本框宽度进行调整。

+0

-1。我测试了你的XAML,它不起作用。 TextBox和Window都不能动态调整大小。 –