Блин; Я приземлился здесь в поисках ответа только на этот вопрос.
Лучшее, что я могу сделать, - это связать MaxWidth TextBlock с размером TreeView и предоставить смещение. Попробуйте этот XAML для (WPF) TreeView и избавьтесь от этой вмещающей StackPanel:
<TreeView>
<TreeViewItem>
<TreeViewItem.Header>
<TextBlock
Text="Maecenas praesent accumsan bibendum dictumst eleifend facilisi faucibus habitant inceptos interdum lobortis nascetur pharetra placerat "
Background="Azure"
TextWrapping="Wrap"
MaxWidth="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeView}}, Path=ActualWidth, Converter={StaticResource ValueSubtractor}, ConverterParameter=30}"
/>
</TreeViewItem.Header>
<TextBlock
Text="Faucibus habitant inceptos interdum lobortis nascetur pharetra placerat pulvinar sagittis senectus sociosqu suscipit torquent ultrices"
Background="#FFBDBDE6"
TextWrapping="Wrap"
MaxWidth="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeView}}, Path=ActualWidth, Converter={StaticResource ValueSubtractor}, ConverterParameter=50}"
/>
<TextBlock
Text="Placerat pulvinar sagittis senectus sociosqu suscipit torquent ultrices vehicula volutpat maecenas praesent accumsan bibendum dictumst"
Background="#FF9090E0"
TextWrapping="Wrap"
MaxWidth="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeView}}, Path=ActualWidth, Converter={StaticResource ValueSubtractor}, ConverterParameter=50}"
/>
</TreeViewItem>
</TreeView>
Вам нужно написать конвертер значений, который выполняет смещение, и убедиться, что смещения для каждого уровня дерева достаточно велики, чтобы горизонтальная полоса прокрутки не появлялась при перемещении сплиттера.
Одна проблема, с которой я столкнулся при использовании этого метода, заключается в том, что, когда я пытаюсь использовать ту же самую привязку для MaxWidth на HiearchicalDataTemplate, смесь 3 жалуется, что XAML недействителен, и я получаю красные кривые. Конечно, он все еще работает, но я с нетерпением жду обновления парсера XAML для Blend!