Я пытаюсь выяснить, как получить текстовое поле для переноса его содержимого, однако ситуация не совсем такая же, как в типичном сценарии «он не переносит». Мое текстовое поле содержится внутри 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 должна составлять 1024, и любой текст после этого будет автоматически переноситься, но если размер окна увеличивается до 1280x1024, поле теперь должно быть 1280 и соответственно перенос текста. Я пробовал этот сценарий с этим обязательным выражением, но не повезло:
MaxWidth="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=ActualWidth}"
Размер самого окна не увеличивается, поэтому, если бы я мог получить ширину окна (за вычетом определенной суммы, чтобы покрыть ширину вкладок, которые являются частью TabControl), я считаю, что это будет работать.
Есть идеи?