2011-04-28 34 views
2

我有這個窗口,如下所述。它基本上是一個位於窗口底部的觸摸屏鍵盤,右側有幾個按鈕,頂部有一個TextBox,用於顯示正在輸入的內容。在運行時,我根據變量更改textBox.Height(並使用換行)。直到一個點(大約600),整個窗口變得更高,以適應更高的文本框,但在此之後,文本框開始向下延伸,而不是鍵盤控件。WPF:管理窗口自動高度並防止重疊控件

有兩個問題: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> 

謝謝!

回答

2

看來,加入SizeToContent="WidthAndHeight"到Window解決了這兩個問題。