IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: C# (WPF), zachycení instance třídy(objekt) přes programově vytvořené TreeView

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar

Člen
Avatar
:8.10.2019 10:18

Vážení kolegové, dobrý den,

mám programově vytvořené TreeView pomocí dvou tříd, jejichž objekty jsou v kolekcích ObservavleCollec­tion<> tak, aby hierarchická struktura TreeView měla dvě úrovně. Bindingem pak data zobrazím. A nyní nastává otázka, jak docílím toho, abych mohl editovat nejen název TreeViewItem, ale abych tímto také editoval vlastnost instance? Jsem v technologii WPF úplný nováček, na Googlu jsem také hledal, ale nenašel jsem co potřebuji a pokud ano, tak jsem to stejně nepochopil, proto pokud tady bude někdo, kdo mi poradí a vysvětlí mi to, tak budu velice rád.

Děkuji Vám všem mnohokrát, Filip.

Zkusil jsem:

// Třída Uzel
public class Uzel
{
    // Proměnné
    public string Name { get; set; }
    public int UrovenVrstvy { get; set; }

}

// Třída Vrstva
public class Vrstva
{
    // Konstruktor
    public Vrstva()
    {
        this.Uzly = new ObservableCollection<Uzel>();
    }

    // Proměnné
    public string Name
    {
        get;
        set;
    }
    public ObservableCollection<Uzel> Uzly
    {
        get;
        set;
    }
    public int UrovenVrstvy
    {
        get;
        set;
    }
}

    <!-- Stromové menu -->
    <ScrollViewer Grid.Row="2" Grid.Column="0" VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Visible">
        <StackPanel>
            <TreeView Name="StromoveMenu" Margin="5" ItemsSource="{Binding}" BorderThickness="0" SelectedItemChanged="KlikniNaMe">
                <TreeView.ItemTemplate>
                    <!-- První úroveň stromového menu: Vrstvy -->
                    <HierarchicalDataTemplate ItemsSource="{Binding Path=Uzly, Mode=TwoWay}">
                        <TextBlock Margin="1" Foreground="Red" Text="{Binding Name, Mode=TwoWay}">
                            <TextBlock.ContextMenu>
                                <ContextMenu>
                                    <MenuItem Header="{Binding Name, Mode=TwoWay}" FontWeight="Bold"/>
                                    <Separator/>
                                    <MenuItem Header="Přidat uzel"/>
                                    <Separator/>
                                    <MenuItem Header="Přidat vrstvu">
                                        <MenuItem Header="Přidat výše" Click="ClickPridatVrstvu"/>
                                        <MenuItem Header="Přidat níže" Click="ClickPridatVrstvu"/>
                                    </MenuItem>
                                    <MenuItem Header="Smazat vrstvu" Click="ClickSmazatVrstvu"/>
                                    <Separator/>
                                    <MenuItem Header="Přejmenovat" Click="ClickPrejmenovatVrstvu"/>
                                </ContextMenu>
                            </TextBlock.ContextMenu>
                        </TextBlock>
                        <!-- Druhá úroveň stromového menu: Uzly -->
                        <HierarchicalDataTemplate.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Margin="1" Foreground="Blue" Text="{Binding Name, Mode=TwoWay}">
                                    <TextBlock.ContextMenu>
                                        <ContextMenu>
                                            <MenuItem Header="{Binding Name, Mode=TwoWay}" Click="MenuItem_Click" FontWeight="Bold"/>
                                            <Separator/>
                                            <MenuItem Header="Smazat uzel" Click="ClickSmazatUzel"/>
                                            <Separator/>
                                            <MenuItem Header="Přejmenovat" Click="AnotherMenuItem_Click"/>
                                        </ContextMenu>
                                    </TextBlock.ContextMenu>
                                </TextBlock>
                            </DataTemplate>
                        </HierarchicalDataTemplate.ItemTemplate>
                    </HierarchicalDataTemplate>
                </TreeView.ItemTemplate>
            </TreeView>
        </StackPanel>
    </ScrollViewer>

Chci docílit: Tento problém se snažím řešit z toho důvodu, abych mohl dále přidávat uzly a vrstvy přes ContextMenu a dynamicky je editovat, nevím jestli na to vůbec jdu dobře.

 
Odpovědět
8.10.2019 10:18
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.