如何防止TreeView的DataTemplate导致控件水平扩展?

时间:2017-09-02 07:27:47

标签: wpf treeview

WPF很新。

            <TreeView Grid.Column="0" x:Name="DataTree" MinWidth="175" BorderThickness="0">
                <TreeView.Resources>
                    <HierarchicalDataTemplate DataType="{x:Type self:DispatchTreeTerritoryItem}" ItemsSource="{Binding ClientLocations}">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{Binding Name}" />
                        </StackPanel>
                    </HierarchicalDataTemplate>
                    <DataTemplate DataType="{x:Type self:DispatchTreeClientLocationItem}">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{Binding ClientName,StringFormat='({0}) '}" />
                            <TextBlock Text="{Binding Address}" />
                        </StackPanel>
                    </DataTemplate>
                </TreeView.Resources>
            </TreeView>

DispatchTreeClientlocationItem属性(ClientNameAddress)中的数据不符合树视图的宽度。因此,在创建项目时,树视图控件会自动展开以允许所有树节点的文本可见。

这不是理想的行为。我希望它的行为类似于WinForms TreeView,其中文本只是在控件的边缘被截断。这可能在WPF中吗?怎么样?

更新

关注@Funk的评论和链接问题中的建议我的TreeView XAML现在看起来像:

<TreeView   x:Name="DataTree" Grid.Column="0"  MinWidth="175" BorderThickness="0"
                    ScrollViewer.HorizontalScrollBarVisibility="Disabled">

我发现行为没有变化。当节点文本太长而无法容纳在TreeView的水平范围内时,TreeView会水平扩展以显示所有文本。

这里有一些截图来说明问题。扩展区域节点时,子节点的内容会导致TreeView水平扩展。

collapsed treeview expanded treeview

1 个答案:

答案 0 :(得分:1)

如果TreeView位于GridColumnDefinition位于Width="Auto",则展开是预期的行为。

尝试设置MaxWidth(在ColumnDefinition或TreeView上)或比例宽度* /固定宽度(在ColumnDefinition上)

网格行(RowDefinition)在其高度设置为“自动

”时具有类似的行为