Как создать подкласс TreeViewItem в WPF и использовать его в виде дерева - PullRequest
3 голосов
/ 27 февраля 2012

Я создал простое свойство зависимостей, которое я хочу прикрепить к treeViewitem, я сделал аналогичные вещи для других элементов управления, таких как кнопки, но не могу понять, как использовать TreeViewItem в древовидной структуре, не потеряв свой определенный стиль.С кодом ниже я получаю «Стиль, предназначенный для типа« ErrorTreeViewItem », не может быть применен к типу TreeViewItem».

public class ErrorTreeViewItem : TreeViewItem
{
    static ErrorTreeViewItem()
    {
    }

    public bool ErrorState
    {
        get { return (bool)GetValue(ErrorStateProperty); }
        set { base.SetValue(ErrorStateProperty, value); }
    }

    public static readonly DependencyProperty ErrorStateProperty =
        DependencyProperty.Register("ErrorState", typeof(bool), typeof(ErrorTreeViewItem), new UIPropertyMetadata(false));
}

Стиль моего дерева выглядит так:1006 * Я использую это как:

    <TreeView Name="ApplicationTree" ItemsSource="{Binding Applications}" HorizontalContentAlignment="Stretch" Background="#E8E8E8" >
        <TreeView.ItemContainerStyle>
            <Style TargetType="me:ErrorTreeViewItem" BasedOn="{StaticResource {x:Type TreeViewItem}}">
                <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
                <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
            </Style>
        </TreeView.ItemContainerStyle>

1 Ответ

0 голосов
/ 28 февраля 2012

TreeView создаст TreeViewItems по умолчанию, поэтому сначала вам нужно настроить ваши элементы в виде дерева.Для этого вам нужно будет создать подкласс TreeView и переопределить PrepareContainerForItem, чтобы вернуть новый экземпляр ErrorTreeViewItem.

...