我想弄清楚如何讓文本框來包裝它的內容,但是情況與典型的「它不包裹」場景並不完全相同。我的文本框被包含其中一個Telerik的RadTabControl實例內部使用(使用ContentTemplatePresenter以確定哪些視圖顯示),一個DataTemplate內部和XAML的DataTemplate中看起來是這樣的:WPF文本框包裝
<DataTemplate x:Key="NotesTemplate">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Text="Use the box below to record any general notes associated with this item." Style="{StaticResource Default}" />
<TextBox TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" GridRow="1" Margin="20" Text="{Binding Notes, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</DataTemplate>
我之所以這麼說,它不」不屬於正常情況下「它不包裝」的情況是它用於包裝,直到我不得不將視圖更改爲可調整大小以支持應用程序將運行的各種屏幕尺寸。當我這樣做時,TextBox停止包裝,因爲(大概)作爲用戶鍵入的東西的TextBox說:「我需要更多的空間」,所以父責任和框繼續向右無限期(儘管視圖獲取滾動條)。我嘗試使用Binding/RelativeSource設置MaxWidth,但由於父級是專門設計用於擴展該方法不起作用。我需要發生的是該框應該是其「包含父母」的寬度VisibleWidth。意思是,如果窗口本身是1024x768,那麼文本框的最大寬度應該是1024,此後的任何文本都會自動換行,但是如果窗口增長到1280x1024,那麼該框現在應該是1280,文本將相應地包裝。我想這種情況與此結合的表達,但沒有運氣:
MaxWidth="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=ActualWidth}"
窗口大小本身並沒有增長,所以如果我能得到的窗口的寬度(減去一定金額,爲此支付的選項卡的寬度TabControl的一部分)我相信這會工作。
任何想法?
結束通過另一個SO問題找到最佳結果:http://stackoverflow.com/questions/386039/wpf-textbox-and-scroll-behavior。 – RubyHaus