NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: [WPF] Přepínání viditelnosti User control pomocí menu

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

Aktivity
Avatar
Jirka
Člen
Avatar
Jirka:29.6.2017 22:13

Ahoj, potřebuji poradit jak přepínat mezi jednotlivými vytvořenými instancemi UserControl pomocí dynamicky vytvářeného menu.
Při každém vytvoření instance se mi do menu "Okno" přidá položka s názvem a číslem. MenuItem má přidělený atribut Header a event ZmenOkno_Click.
Rád bych aby po kliknutí na libovolnou položku se pomocí metody ZmenOkno_Click v hlavním okně přepnul ten správný user control a nevím jak toho docílit a bohužel se mi ani nedaří to správně dohledat přes google.
Předem děkuji za pomoc

 
Odpovědět
29.6.2017 22:13
Avatar
ostrozan
Tvůrce
Avatar
ostrozan:30.6.2017 7:11

Nevím jestli úlně chápu co chceš, ale jestli ti jde jen o to - identifikovat která kontrolka vyvolala metodu - tak tu najdeš v e.Source

private void ZmenOkno_Click(object sender, RoutedEventArgs e)
{
    MenuItem item = (MenuItem) e.Source;
    ......................
    ......................

}
 
Nahoru Odpovědět
30.6.2017 7:11
Avatar
Jirka
Člen
Avatar
Odpovídá na ostrozan
Jirka:30.6.2017 8:12

Chci mít v liště menu položku Okno kterou když rozkliknu tak tam budou položky, které by měli odkazovat na vytvořené instance UserControl, které se mi při vytvoření vkládají do MainWindow na sebe, takže je vždy vidět jen ta poslední a všechny předchozí jsou skryté po ní. A chci aby po kliknutí na danou položku se mi zobrazila právě ta ona vybraná z lišty menu Okno->Položka2 a stejně tak analogicky pro ostatní .

 
Nahoru Odpovědět
30.6.2017 8:12
Avatar
zelvicek
Člen
Avatar
zelvicek:30.6.2017 11:25

S WPF nemám moc zkušeností, ale nemá MenuItem vlastnost Tag, jež bys naplnil vytvořenou instancí okna? Pak už jen v methodě ZmenOkno_Click přečteš instanci okna z parametru sender přetypovaného na MenuItem (viz ostrozan).

Další možností by bylo, udělat si Dictionary<Me­nuItem,Form> a udržovat si v něm reference mezi položkou menu a příslušným oknem.

 
Nahoru Odpovědět
30.6.2017 11:25
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 4 zpráv z 4.