WPF:管理窗口自动高度并防止重叠控件

时间:2011-04-28 18:19:57

标签: wpf

我有这个窗口,如下所述。它本质上是一个位于窗口底部的触摸屏键盘,右边有几个按钮,顶部有一个TextBox,用于显示正在键入的内容。在运行时,我根据变量(并使用换行)更改textBox.Height。最多一点(大约600),整个窗口变得更高,以适应更高的TextBox,但在此之后,textBox开始向下延伸,紧跟键盘控制。

两个问题:1)是什么让窗口继续变得更高(屏幕上和所有者窗口中仍然有空间(我的窗口是使用ShowDialog打开的,并指定了所有者窗口),以及2)是什么导致TextBox开始成长并落后于其他控件,或者说,我该如何防止这种情况?

<Window x:Class="WFT.Controls.TextEditDialog"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:wft="clr-namespace:WFT.Controls"
    WindowStyle="None" Height="Auto" Width="Auto" WindowState="Normal" 
    FontSize="16pt" AllowsTransparency="True" Background="Transparent">

<wft:CaptionedBox x:Name="capBox" Caption="Edit Text" VerticalAlignment="Center" HorizontalAlignment="Center">
    <DockPanel>
        <DockPanel DockPanel.Dock="Right">
            <wft:TouchButton DockPanel.Dock="Top" Click="Cancel_Click">Cancel</wft:TouchButton>
            <StackPanel Orientation="Vertical" VerticalAlignment="Bottom" DockPanel.Dock="Right">
                <wft:TouchButton x:Name="okButton" DockPanel.Dock="Bottom" Click="Login_Click">Accept</wft:TouchButton>
            </StackPanel>
        </DockPanel>

        <wft:OnScreenKeyboard x:Name="osk" DockPanel.Dock="Bottom" />
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="auto" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="auto" />
            </Grid.ColumnDefinitions>
            <wft:GelBox Grid.Column="0" Visibility="Hidden" />
            <TextBox Name="textBox" Height="30" Grid.Column="1" 
                     HorizontalContentAlignment="Left" DockPanel.Dock="Top" 
                     TextWrapping="Wrap"/>
            <wft:GelBox x:Name="errorIcon" Grid.Column="2" Visibility="Hidden" />
        </Grid>

    </DockPanel>
</wft:CaptionedBox>

</Window>

谢谢!

1 个答案:

答案 0 :(得分:2)

似乎向窗口添加SizeToContent="WidthAndHeight"解决了这两个问题。