Кнопка Expander существует в каждом TreeViewButton. Его видимость зависит от дочерних элементов - Expander скрыт, если дочерних элементов нет. Он настроен в TreeViewItem ControlTemplate ( см. Полный пример ):
<Trigger Property="HasItems" Value="false">
<Setter Property="Visibility" TargetName="Expander" Value="Hidden"/>
</Trigger>
вы можете отредактировать весь шаблон и удалить этот триггер
... или переопределить его индивидуально для каждый TreeViewItem:
Добавить стиль для TreeViewItems в TreeView, как это, и обрабатывать событие Loaded:
<TreeView ItemsSource="{Binding nodes}" Grid.ColumnSpan="2">
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<EventSetter Event="Loaded" Handler="FrameworkElement_OnLoaded"/>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Nodes}">
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
private void FrameworkElement_OnLoaded(object sender, RoutedEventArgs e)
{
var tvi = (TreeViewItem)sender;
var btn = tvi.Template.FindName("Expander", tvi) as UIElement;
if (btn != null)
btn.Visibility = Visibility.Visible;
}
когда TreeViewItem загружен, можно найти кнопку Expander в визуальном дереве , созданный из ControlTemplate. Назначение локального значения для Visibility
отменяет существующий триггер