我想弄清楚如何让文本框来包装它的内容,但是情况与典型的“它不包裹”场景并不完全相同。我的文本框被包含其中一个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