Я пытаюсь выяснить, как получить текстовое поле для обертывания его содержимого, однако ситуация не совсем такая, как типичный сценарий "он не обертывает". Мое текстовое поле содержится внутри DataTemplate, который используется внутри экземпляра Telerik RadTabControl (с использованием ContentTemplatePresenter для определения того, какой вид для отображения), и XAML для DataTemplate выглядит следующим образом:
<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 говорит "Мне нужно больше места", поэтому родитель обязуется, и поле продолжается до бесконечности (хотя в представлении есть полосы прокрутки). Я попытался установить MaxWidth с использованием Binding/RelativeSource, но так как родитель специально разработан, чтобы расти, этот подход не будет работать. То, что мне нужно, - это ширина его "содержащих родителей" VisibleWidth. Смысл, если само окно 1024x768, TextBox MaxWidth должно быть 1024, и любой текст после этого будет автоматически обернут, но если Окно увеличится до 1280x1024, то теперь размер окна должен быть 1280, а текст - соответствующим образом. Я пробовал этот сценарий с этим обязательным выражением, но не повезло:
MaxWidth="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=ActualWidth}"
Размер окна сам по себе не растет, поэтому, если бы я мог получить ширину окна (минус определенная сумма, чтобы покрыть ширину вкладок, которые являются частью TabControl), я считаю, что это сработает.
Любые идеи?