2016-06-01 6 views
1

Ich versuchte App zum Testen regulären AusdrucksWarum TreeView rekursiv wird, wenn Regex-Übereinstimmungen angezeigt werden?

mithilfe von TreeView zu machen Match zu Fenster

anzuzeigen Aber es funktioniert nicht richtig

App.xaml

<Application x:Class="RegularExpressionTester.App" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:RegularExpressionTester" 
     xmlns:Regex="clr-namespace:System.Text.RegularExpressions;assembly=System" 
     StartupUri="MainWindow.xaml"> 
<Application.Resources> 
    <local:MainViewModel x:Key="MainViewModel"/> 

    <HierarchicalDataTemplate DataType="{x:Type Regex:Match}" ItemsSource="{Binding Path=Groups}"> 
     <TextBlock Text="{Binding Path=Value, StringFormat=[{0}](Match)}"/> 
    </HierarchicalDataTemplate> 
    <HierarchicalDataTemplate DataType="{x:Type Regex:Group}" ItemsSource="{Binding Path=Captures}"> 
     <TextBlock Text="{Binding Path=Value, StringFormat=[{0}](Group)}"/> 
    </HierarchicalDataTemplate> 
    <HierarchicalDataTemplate DataType="{x:Type Regex:Capture}"> 
     <TextBlock Text="{Binding Path=Value, StringFormat=[{0}](Capture)}"/> 
    </HierarchicalDataTemplate> 
</Application.Resources> 

Ergebnis:

Real Application

Ich möchte

▶ Spiel

.. ▶ Gruppe

.... ▶ Capture-

▶ Spiel

wie dieses (erwartete Ergebnis) angezeigt werden

.. ▶ Gruppe

.... ▶ Erfassen

Wie kann ich tun?

+0

_But es funktioniert nicht correctly_ nicht erklären, was das Problem ist? Kannst du mehr Details geben? – dkozl

Antwort

1

Warum ist es möglich, unendlich hierarchy zu bekommen?

ist es aufgrund der Struktur und Match.GroupsGroup.Captures

Das Spiel Instanz selbst ist äquivalent zu dem ersten Objekt in der Sammlung, bei Match.Groups [0]

von Match class - Remarks

Die Gruppeninstanz entspricht dem letzten Element der Sammlung, das von den Captures zurückgegeben wird Eigenschaft, die die letzte Erfassung gemacht durch die Erfassungsgruppe

von Group class - Remarks

wie sie beheben reflektiert?

Vorlagen wie folgt ändern:

<HierarchicalDataTemplate DataType="{x:Type Regex:Match}" 
          ItemsSource="{Binding Path=Groups}"> 

    <TextBlock Text="{Binding Path=Value, StringFormat=[{0}](Match)}"/> 

    <HierarchicalDataTemplate.ItemTemplate> 
     <HierarchicalDataTemplate DataType="{x:Type Regex:Group}" 
          ItemsSource="{Binding Path=Captures}"> 

      <TextBlock Text="{Binding Path=Value, StringFormat=[{0}](Group)}"/> 

      <HierarchicalDataTemplate.ItemTemplate> 
       <DataTemplate DataType="{x:Type Regex:Capture}"> 
        <TextBlock Text="{Binding Path=Value, StringFormat=[{0}](Capture)}"/> 
       </DataTemplate> 
      </HierarchicalDataTemplate.ItemTemplate> 

     </HierarchicalDataTemplate> 
    </HierarchicalDataTemplate.ItemTemplate> 

</HierarchicalDataTemplate> 
+0

Es funktioniert. Aber etwas anderes. Seem to Match wird an Group übergeben. https://drive.google.com/file/d/0B3EmLCf3GeuUYTh3ZXFvcWpTVW8/view?usp=sharing – user209030

+0

Schließlich verwende ich IValueConverter. https://drive.google.com/file/d/0B3EmLCf3GeuUTWhoYW1VS1FBbGM/view?usp=sharing & https://drive.google.com/file/d/0B3EmLCf3GeuUd3R0SjRxN0k4THc/view?usp=sharing Tanks für Ihre Hilfe :) – user209030

Verwandte Themen