WPF Treeview со столбцами фиксированной ширины

Это потому, что у Sklearn нет модуля cross_validation. Попробуйте использовать:

from sklearn.model_selection import cross_validate
8
задан 6 April 2009 в 20:24
поделиться

1 ответ

Существует путь, у меня есть такой зверь в приложении Silverlight

Необходимо настроить шаблон treeviewitem. Шаблон по умолчанию не расширяется полностью через treeview.

Путем тонкой настройки шаблона можно заставить это расширяться полностью, и можно затем установить DataTemplate (или HierarchicalDataTemplate) к сетке. Если я помню правильно, необходимо получить копию шаблона по умолчанию TreeviewItem и изменить свойство HorizontalAlignment элемента "Заголовка", чтобы "Расширить", удалить крайний правый столбец в сетке, которая составляет шаблон, и измените ширину столбца, содержащего элемент от "Автоматического" до "*".

Довольно легко сделать смешение использования. Создайте TreeViewItem, щелкните правой кнопкой по нему и избранные "части средств редактирования ("Шаблон")> Редактирование копия..." Это создаст копию шаблона по умолчанию для TreeViewItem. Оттуда, найдите ContentPresenter под названием PART_Header. При приближении от этого найдите содержание сетки и измените ее столбцы для соответствия моему explanantion (удалите последний столбец, измените второй столбец от "Автоматического" до "*"). В Стиле, который был создан для объекта, установил HorizontalContentAlignment для "Простираний" (он связывается с чем-то еще по умолчанию).

Используйте Стиль, который был создан как ItemContainerStyle на Вашем treeview. Можно удалить TreeViewItem, который Вы создали сначала после этого.

В конце Вы shuold заканчиваются с набором ресурсов, один из которых является Вашим стилем. Посмотрите ниже для того, что я заканчиваю с (и стиль TreeViewItem и основной DataTemplate для моих объектов с именем и столбцами значений). Существуют другие ресурсы, созданные это ссылка стиля/шаблона TreeViewItem, но их не показывают здесь (потому что это уже слишком длинно :p).

<Window.Resources>    
<Style x:Key="TreeViewItemStyle1" TargetType="{x:Type TreeViewItem}">
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        <Setter Property="VerticalContentAlignment" Value="{Binding Path=VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
        <Setter Property="Padding" Value="1,0,0,0"/>
        <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
        <Setter Property="FocusVisualStyle" Value="{StaticResource TreeViewItemFocusVisual}"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TreeViewItem}">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition MinWidth="19" Width="Auto"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition/>
                        </Grid.RowDefinitions>
                        <ToggleButton x:Name="Expander" Style="{StaticResource ExpandCollapseToggleStyle}" ClickMode="Press" IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}"/>
                        <Border x:Name="Bd" SnapsToDevicePixels="true" Grid.Column="1" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}">
                            <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" x:Name="PART_Header" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" ContentSource="Header"/>
                        </Border>
                        <ItemsPresenter x:Name="ItemsHost" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="1"/>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsExpanded" Value="false">
                            <Setter Property="Visibility" TargetName="ItemsHost" Value="Collapsed"/>
                        </Trigger>
                        <Trigger Property="HasItems" Value="false">
                            <Setter Property="Visibility" TargetName="Expander" Value="Hidden"/>
                        </Trigger>
                        <Trigger Property="IsSelected" Value="true">
                            <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
                            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
                        </Trigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsSelected" Value="true"/>
                                <Condition Property="IsSelectionActive" Value="false"/>
                            </MultiTrigger.Conditions>
                            <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
                            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
                        </MultiTrigger>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

        <HierarchicalDataTemplate x:Key="DataTemplate1"                                   
                                  ItemsSource="{Binding SubNodes}">
            <Grid Margin="5">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
                <TextBlock HorizontalAlignment="Left"
                           VerticalAlignment="Top"
                           Grid.Column="1"
                           Text="HEADER"
                           TextWrapping="Wrap" />
                <TextBox HorizontalAlignment="Left"
                         Margin="2"
                         VerticalAlignment="Top"
                         Text="VALUE"
                         TextWrapping="Wrap"
                         Grid.Column="2" />
            </Grid>

</Window.Resources>

<TreeView HorizontalAlignment="Stretch"
                  VerticalAlignment="Stretch"
                  Width="Auto"
                  Height="Auto"
                  x:Name="trv"
          ItemContainerStyle="{StaticResource TreeViewItemStyle1}"
                  ItemTemplate="{DynamicResource DataTemplate1}">            
        </TreeView>

Обратите внимание, что необходимо удостовериться, что столбцы сетки, содержащие ячейки справа, всегда будут той же шириной, иначе у Вас будет что-то странным (я использую столбцы "Auto" с фиксированным содержанием ширины, и я добавляю пробел "*" столбец между именем и "ячейками" к выравниванию по правому краю их).

Также обратите внимание, что это решение в основном "замораживает" появление treeview к любой теме, которую Вы имеете на своей машине. (Это будет выглядеть одинаково на Vista и машине XP, на основе ОС, которую Вы использовали при создании модификации).

6
ответ дан 5 December 2019 в 22:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: