2011-08-10 4 views
0

Boththese質問は、ストレッチテキストボックスをコンテナの幅/高さにバインドし、ユーザー入力では拡大しないと言うと、プレースホルダの境界線を使用して実際の高さ/幅にバインドする必要があります。WPFレイアウト:Tabcontrol内でテキストボックスを作成する

これはうまく動作します。テキストボックスはユーザーの入力に伴って成長するのを止めますが、テキストボックスはサイズを変更するためにサイズが変更されますが、縮小することはありません。 RenderSizeを使用すると、拡大縮小しますが、ユーザーの入力に合わせて拡大します。また、幅/高さをバインドする要素を追加すると、ちょっとハッキリに見えます。より良い解決策はありますか?

これは、テキストボックスを伸ばしたときのデフォルトの動作であるようです。

EDIT:ここでは(以下アーロンの提案を含む)XAMLはEDIT2

<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> 

次のとおりです。私はそれが違いを作るかどうかわからないのですが、これらの要素はに結合しているのTabControlの内容ですViewModelのコレクションパターンの例については、This Articleを参照してください。

答えて

1

TextBoxのプロパティをコンテナのWidthプロパティにバインドします。

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

これは効果がありません。 – Tyrsius

+0

WidthとActualWidthの両方を試しました。これは機能しません。 – Tyrsius

+0

@ティリウス私は何かが欠けているはずです。投稿したXAMLが期待通りに動作します。コンテナが大きくなると、TextBoxは拡大し、コンテナが縮小すると縮小します。また、ユーザーの入力に伴って成長することもありません。 –

関連する問題