2011-05-03 6 views
1

상태 표시 줄에 TextBlock과 몇 개의 버튼이 있습니다. 버튼은 실제로 오른쪽 정렬됩니다 (e : 실제로 이들을 포함하는 StatusBarItem이 있습니다). 창이 가로로 축소되어 텍스트가 줄 바꿈되면 TextBlock은 창에서 Buttons를 다양한 각도로 푸시합니다.TextBlock 텍스트 배치가 다른 구성 요소를 푸시합니다.

왜 이런 일이 발생하며 버튼의 위치를 ​​수정하려면 어떻게해야합니까?

<Window x:Class="TextWrapping.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <DockPanel> 
     <StatusBar DockPanel.Dock="Bottom"> 
      <StatusBarItem> 
       <TextBlock Name="statusText" TextWrapping="Wrap" Text="when this text wraps, it pushes the buttons off the window" /> 
      </StatusBarItem> 
      <StatusBarItem HorizontalAlignment="Right"> 
       <StackPanel Orientation="Horizontal"> 
        <Button>one</Button> 
        <Button>two</Button> 
       </StackPanel> 
      </StatusBarItem> 
     </StatusBar> 
     <TextBlock Text="shink this window horizontally" /> 
    </DockPanel> 
</Window> 

답변

1

당신은 자세한 내용은이 blog post를 볼 수 있지만 기본적으로 상태 바는 항목의 제시하기 위해 DockPanel을 사용하고 있습니다. 따라서 위에서 작성한 코드의 경우 statusText가 왼쪽으로 도킹되고 버튼이 나머지 공간을 채 웁니다 (그러나 해당 영역 내에서 수평으로 정렬 됨).

크기가 작을수록 TextBlock은 필요한만큼의 공간을 차지하므로 버튼의 크기가 0이됩니다. 텍스트가 묶여있을 때, 버튼은 TextBlock이 모든 수평 공간을 필요로하지 않기 때문에 조금 더 많은 공간으로 되돌아갑니다.

은 당신이 당신의 코드를 변경할 수를 수정하려면 :

<DockPanel> 
    <StatusBar DockPanel.Dock="Bottom"> 
     <StatusBarItem DockPanel.Dock="Right"> 
      <StackPanel Orientation="Horizontal"> 
       <Button>one</Button> 
       <Button>two</Button> 
      </StackPanel> 
     </StatusBarItem> 
     <StatusBarItem> 
      <TextBlock Name="statusText" TextWrapping="Wrap" Text="when this text wraps, it pushes the buttons off the window" /> 
     </StatusBarItem> 
    </StatusBar> 
    <TextBlock Text="shink this window horizontally" /> 
</DockPanel> 

또는 당신은 그리드와 함께 DockPanel을 대체하기 위해, 트릭이 블로그 게시물을 표시 할 수 있습니다.

관련 문제