2011-08-10 3 views
0

Boththese 컨테이너의 너비/높이를 늘리고 사용자 입력에 따라 늘어나지 않는 텍스트 상자를 바인딩하려면 사용자에게 자리 표시 자 테두리를 지정하고 실제 높이/너비를 바인딩해야합니다.WPF 레이아웃 : Tabcontrol 내에서 텍스트 상자를 성장

이 경우에만 작동합니다. 텍스트 입력란이 사용자 입력에 따라 커지는 것을 막지 만 텍스트 상자의 크기가 커지기만하면 크기가 줄어들지 않습니다. RenderSize를 사용하면 확장 및 축소되지만 사용자 입력에 따라 다시 커집니다. 또한 너비/높이를 바인드하기위한 추가 요소를 추가하는 것은 약간 해킹 된 것처럼 보입니다. 더 나은 해결책이 있습니까?

이것은 텍스트 상자를 늘리는 기본 동작처럼 보입니다.

편집 : 나는 그것이 차이가 있는지 잘 모르겠지만,이 요소에 바인딩을 TabControl의 내용은 다음과 같습니다 여기

<TabControl HorizontalAlignment="Stretch" Margin="5,15,5,5" Name="tabControl2" VerticalAlignment="Stretch" MinHeight="80"> 
          <TabItem Header="Description" Name="tabItem2" FontSize="14" IsEnabled="True"> 
           <Grid> 
            <Border Name="b_desc"/> 
            <TextBox HorizontalAlignment="Stretch" Margin="0" Name="textBox5" 
              VerticalAlignment="Stretch" FontSize="12" TextWrapping="Wrap" 
              AutoWordSelection="True" VerticalScrollBarVisibility="Auto" 
              AcceptsReturn="True" 
              Width="{Binding ElementName=b_desc, Path=ActualWidth}" 
              Height="{Binding ElementName=b_desc, Path=ActualHeight}" 
              MaxWidth="{Binding ElementName=b_desc, Path=Width}" 
              MaxHeight="{Binding ElementName=b_desc, Path=Height}" /> 
           </Grid> 
          </TabItem> 
         </TabControl> 

EDIT2 (아론의 아래에 제안 포함) XAML입니다 ViewModel의 콜렉션 패턴의 예는 This Article을 참조하십시오.

답변

1

TextBoxMaxWidth 속성을 컨테이너의 Width 속성에 바인딩하십시오.

<TextBox Width="Auto" MaxWidth="{Binding ElementName=myTabControl, Path=Width}"/> 
+0

이것은 아무런 효과가 없습니다. – Tyrsius

+0

나는 Width와 ActualWidth를 모두 시도했다. 이것은 작동하지 않습니다. – Tyrsius

+0

@ 티 루스 우스 나는 뭔가를 놓치고 있어야합니다. 게시 한 XAML이 예상대로 작동합니다. 컨테이너가 커지면 TextBox가 커지고 컨테이너가 축소되면 축소됩니다. 또한 사용자 입력에 따라 커지지도 않습니다. –