c # wpf стилизация HierarchicalDataTemplate для представления в виде ссылки пары ключ-значение - PullRequest
0 голосов
/ 10 октября 2018

Я представляю XML в виде дерева в WPF.Узлы стилизованы с использованием HierarchicalDataTemplate для представления атрибута Xml и его значения, как показано ниже.

Normal Node Representation

Selected Node Representation

<HierarchicalDataTemplate DataType="Field" ItemsSource="{Binding XPath=./*}">
    <StackPanel Orientation="Horizontal" Margin="2"  >
        <Border BorderBrush="White" Background="{DynamicResource AccentColorBrush}" BorderThickness="2" CornerRadius="3" Margin="2,0,0,0">
            <TextBlock   Foreground="White"   Margin="3" Text="Field" />
        </Border>
        <Border BorderBrush="White" Background="WhiteSmoke" BorderThickness="2" CornerRadius="3" Margin="2,0,0,0">
            <TextBlock  Margin="3" Text="{Binding XPath=@FieldName}" />
        </Border>
    </StackPanel>
</HierarchicalDataTemplate>

Я хочу, чтобы они были представлены в виде пары тег / значение ключа, обозначенной некоторой ссылкой / равной и т. Д., Как показано на рисунке ниже enter image description here Как этого добиться с помощью изменений в xaml,Мне нужны другие способы, кроме как ввести изображение «связи» между парой, чтобы показать их как связанные.

1 Ответ

0 голосов
/ 10 октября 2018

Вы ищете что-то подобное?

enter image description here

Если это так, вы можете добиться с помощью Separator.

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="10"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <Border Grid.Column="0" BorderBrush="Black" Background="Green" BorderThickness="2" 
            CornerRadius="3" Margin="2,0,0,0">
        <TextBlock VerticalAlignment="Center" Foreground="White" Margin="10,0,10,0" Text="Field" />
    </Border>
    <Border Grid.Column="2" BorderBrush="Black" Background="LightGray" BorderThickness="2" 
            CornerRadius="3" >
        <TextBlock Margin="10,0,10,0" Text="Test1" />
    </Border>
    <Border Grid.Column="1" Margin="-6" Background="White" Height="5" CornerRadius="2">
        <Separator Background="Black" Margin="2,0,2,0"/>
    </Border>
</Grid>
...