2011-04-28 2 views
2

아래에 설명 된이 창이 있습니다. 그것은 본질적으로 윈도우 하단에있는 터치 스크린 키보드이며, 오른쪽에 두 개의 버튼이 있으며, 입력되는 내용을 보여주는 상단의 TextBox가 있습니다. 런타임에는 변수를 기반으로 textBox.Height를 변경하고 랩을 사용합니다. 최대 점 (약 600)까지, 전체 창은 키가 큰 TextBox를 수용하기 위해 커지지 만 이후에는 텍스트 상자가 키보드 컨트롤 바로 아래로 확장되기 시작합니다.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

Window에 SizeToContent="WidthAndHeight"을 추가하는 것이 두 가지 문제를 해결 한 것으로 보입니다.