Laden...

WPF TreeView SubItems leer

Erstellt von can320 vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.087 Views
C
can320 Themenstarter:in
151 Beiträge seit 2006
vor 10 Jahren
WPF TreeView SubItems leer

Ich versuche ein TreeView mit SubItems zu erstellen. Die Items werden richtig angezeigt. Die Anzahl der SubItems stimmt auch, aber der Text ist nicht sichtbar (siehe screenshot unten)


        <TreeView ItemsSource="{Binding mStatistik}" Margin="10" Height="200" Name="treeViewDl">

        <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding mDateien2}" >
                    <TreeViewItem Header="{Binding mIp}"/>
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>
   // vereinfachte Kurzfassung vom Quellcode
               public class Statistik 
              {        
                 public string mIp { get; set; }
                 public ObservableCollection<DateTime> mDateien2{ get; set; }
                 .....
              }


        private void DateiAnzeigen()
        {
               // vereinfachte Kurzfassung vom Quellcode
                Statistik s = new Statistik();
                s.mIp ="1:14352342";
                s.mDateien2.Add("def");
                s.mDateien2.Add("def1");
                s.mDateien2.Add("def2");
                s.mDateien2.Add("defsfsadfjhasdhfoauiwheriulheh3");
                s.mDateien2.Add("def2");
                mStatistik.Add(s);
                .........
         }

P
660 Beiträge seit 2008
vor 10 Jahren

Hallo,

Du kannst ja mal folgende Methode ausprobieren (Method 2) und gucken was mIp für werte hat:
Use a ValueConverter to break into the debugger

MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden! *"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht." *"Ignorance simplifies ANY problem." *"Stoppt die Piraterie der Musikindustrie"

R
212 Beiträge seit 2012
vor 10 Jahren

Was hast du denn in mDateien2 stehen?

C
can320 Themenstarter:in
151 Beiträge seit 2006
vor 10 Jahren

Danke ProGamer habs gelöst

Die Lösung, falls es jemandem etwas bringt:

    
 <Window.Resources>
        <local:DatabindingDebugConverter x:Key="debugConverter" />

        <Style x:Key="{x:Type TreeViewItem}" TargetType="{x:Type TreeViewItem}">
            <Setter Property="HorizontalContentAlignment" Value="Left" /> <!-- Sonst gibts ne menge Fehlermeldungen siehe weiter unten-->
            <Setter Property="VerticalContentAlignment" Value="Center" />
        </Style>
    </Window.Resources>

    <Grid>
        <TreeView ItemsSource="{Binding mStats}" Margin="0,0,0,66" Name="tvDownloads" FontFamily="Courier New" >
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding SubItems, Converter={StaticResource debugConverter}}" >
                    <TextBlock Text="{Binding Ip, FallbackValue=error2}" /> <!--TextBlock für Ip-->

                    <HierarchicalDataTemplate.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Dateien, FallbackValue=error}" > <!--TextBlock für Dateien eingefügt-->
                            <TextBlock.Style>
                                <Style TargetType="TextBlock">
                                        <Setter Property="FontFamily" Value="Courier New"/>
                                </Style>
                            </TextBlock.Style>
                            </TextBlock>


                        </DataTemplate>
                    </HierarchicalDataTemplate.ItemTemplate>

                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>
    </Grid>

Fehlermeldungen falls "HorizontalContentAlignment" nicht gesetzt:> Fehlermeldung:

System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=VerticalContentAlignment; DataItem=null; target element is 'TreeViewItem' (Name=''); target property is 'VerticalContentAlignment' (type 'VerticalAlignment')
System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=HorizontalContentAlignment; DataItem=null; target element is 'TreeViewItem' (Name=''); target property is 'HorizontalContentAlignment' (type 'HorizontalAlignment')

    public class Statistik 
    {
        private string Ip { get; set; }
        public string Dateien { get; set; }
        public ObservableCollection<Statistik> SubItems { get; set; } // Subitems ebenfalls als ObservableCollection
        ....
    }

public static ObservableCollection<Statistik> mStats = new ObservableCollection<Statistik>();