Java týden Body zdarma
Využij podzimních slev a získej od nás až 40 % bodů zdarma! Více zde
Pouze tento týden sleva až 80 % na Java e-learning!
Avatar
Filip Pawera
Člen
Avatar
Filip Pawera:8. října 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. října 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.