で水平拡張するのテキストボックスには、私は私のApp.xaml防止WPF
<Style x:Key="textBoxMultiline" TargetType="{x:Type TextBox}" >
<Setter Property="VerticalScrollBarVisibility" Value="Auto" />
<Setter Property="HorizontalScrollBarVisibility" Value="Hidden" />
<Setter Property="MinHeight" Value="50" />
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
にと簡単なテキストを必要とするすべてのテキストボックスに、我々はそれを使用しているソリューション全体で定義された次のスタイルを持っています。
<TextBox x:Name="textBoxDescription" Grid.Row="2" Grid.Column="1" Style="{DynamicResource textBoxMultiline}" />
すべてが素晴らしい作品が、その後、クライアントはいくつかのフィールド文句は低解像度の古いモニターでcorpedので、私はcorpingを防ぐために、高いビジュアルツリーノードのいずれかにScrollViewer
を配置しました。
<ScrollViewer Height="Auto" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
...
</ScrollViewer>
不思議なことに、上記のスタイルでTextBox
ES代わりにテキストをラップの右側に拡大し始めます。
ScrollViewer
を削除せずにこれを防ぐ方法はありますか?
に
を追加することができます。私はちょっと、固定幅のものを組み込むためにテキストボックステンプレートをオーバーライドし、その新しい要素幅にtextBox actualwidthをバインドするような、より汎用的なソリューションを探していました。これはたくさんの勇気がかかっているようですが、私はTextBoxスタイルの変更だけを進化させるものを探していました。 – dcarneiro
あなたがやっていることはやや矛盾しています。テキストボックスの幅が制限されている場合は、無制限の水平スペースを持つスクロールビューア内に配置します( "自動")。あなたはそれを解決するかもしれませんが、一般的な方法はありません。 scrollviewerのActualWidthとテキストボックスの(最大)幅からバインディングを作成する必要があります。問題は、オフセットと他のものを考慮に入れるためにコンバータを追加する必要があることです(私にとっては非常に面倒です)。 –
低解像度の画面で他のコントロールがトリミングされたため、水平スクロールバーがハックしていました。私はテキストボックスの幅を同じ幅の要素(同じスタイルで同じグリッドセルの別のテキストボックスが隠されている)にバインドしようとしましたが、うまくいきました。しかし、私は、テキストをラップするのではなく、情報がどこにあるTextBlockも水平方向に拡大することを発見しました。これは、水平スクロールバーがTextWrappingプロパティよりも優先されることを示しています。だから私は低画面解像度をサポートするためにUIを再設計しなければならないと思う。 – dcarneiro