TreeView с кнопками - PullRequest
       33

TreeView с кнопками

0 голосов
/ 21 января 2011

У меня есть TreeView, где у каждого узла есть значок и текст описания.Но я не хочу, чтобы какой-либо узел мог быть выбран.Вместо этого я хочу, чтобы каждый узел действовал как кнопка.Он запускает команду, когда пользователь нажимает ее.Но это может не выглядеть как кнопка или гиперссылка

Это то, что я пробовал до сих пор.Проблема в том, что текст синий, а текст подчеркнут.Кроме того, иногда узел выбирается и, следовательно, синий.

<TreeView.Resources>
    <HierarchicalDataTemplate DataType="{x:Type vm:ListGroupViewModel}"  ItemsSource="{Binding Children}">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding Text}" FontWeight="Bold" ></TextBlock>
        </StackPanel>
    </HierarchicalDataTemplate>

    <DataTemplate DataType="{x:Type vm:ListNodeViewModel}">
        <TextBlock> 
            <Hyperlink TextDecorations="{x:Null}" Command="{Binding ClickCommand, Mode=OneTime}">
                <StackPanel Orientation="Horizontal">
                    <Image Margin="0,2,2,0" Source="{Binding Icon}" />
                    <TextBlock Text="{Binding Text}" />
                </StackPanel>
            </Hyperlink>
        </TextBlock>
    </DataTemplate>
</TreeView.Resources>

1 Ответ

3 голосов
/ 21 января 2011

Вы должны переопределить стиль гиперссылки:

        <Style x:Key="HyperlinkStyle" TargetType="Hyperlink">
            <Setter Property="Foreground"
                    Value="Black"/>
            <Setter Property="TextDecorations"
                    Value="{x:Null}"/>
        </Style>

        <DataTemplate DataType="{x:Type vm:ListNodeViewModel}">
            <TextBlock> 
                <Hyperlink Command="{Binding ClickCommand, Mode=OneTime}"
                           Style="{StaticResource HyperlinkStyle}">
                    <StackPanel Orientation="Horizontal">
                        <Image Margin="0,2,2,0" Source="{Binding Icon}" />
                        <TextBlock Text="{Binding Name}" />
                    </StackPanel>
                </Hyperlink>
            </TextBlock>
        </DataTemplate>

Чтобы скрыть выбор элементов дерева, вы можете переопределить SystemColors.HighlightBrushKey, который используется в представлении дерева для выделения элементов:

<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
...