Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako otvoriti prozor u okviru drugog?

[es] :: .NET :: WPF Programiranje :: Kako otvoriti prozor u okviru drugog?

[ Pregleda: 1968 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

jmix23
Jankovic Miljan
Database - Programer
Priboj

Član broj: 175500
Poruke: 69
93.93.199.*



Profil

icon Kako otvoriti prozor u okviru drugog?12.06.2011. u 23:33 - pre 156 meseci
Pozdrav narode,

trebala bi mi mala pomoc. Pravim aplikaciju u WPF-u i imam zamisao da otvorim jedan prozor u okviru drugog. Ideja je sledeca: Imam, da ga tako nazovem, glavni prozor u cijem jednom delu se nalazi TreeView sa svojim Item-ima. Klikom na item mi se otvara prozor ali bih da se otvara u drugom delu tog glavnog prozora, cak i kada se maximizira. U ovom slucaju, TreeView bi mi sluzio kao neka vrsta menija, koji bih da zadrzim kao template i prilikom otvaranja novog prozora. Da li ima neko ideju kako bi ti moglo da se resi ???


jmix
 
Odgovor na temu

wex-alpha
Sarajevo

Član broj: 7580
Poruke: 845
*.dynamic.telemach.ba.



+13 Profil

icon Re: Kako otvoriti prozor u okviru drugog?14.06.2011. u 19:54 - pre 156 meseci
Ims dosta drugih boljih i laksih nacina da uradis to sto si naumio. Ako sam te ispravno shvatio, ovaj link te moze usmjeriti na pravi put.

http://www.codeproject.com/KB/WPF/mwiwpf.aspx
 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
*.dynamic.isp.telekom.rs.

Sajt: www.drinacoding.com


+14 Profil

icon Re: Kako otvoriti prozor u okviru drugog?15.06.2011. u 13:10 - pre 156 meseci
Radio sam nešto slično pre par godina pa ću izvući nekoliko bitnijih delova koda.
TreeView sam popunjavao iz XML-ova, u zavisnosti od odabrane grupe komandi što bi bilo slično prikazu MenuItem-a izabranog MenuItem-a iz prvog reda.
Code:

        private void PuniGlTreeView(string grupa)
        {
            OdabranaGrupaKomandi = grupa;
            System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
            XmlDataProvider provider = new XmlDataProvider();
            switch (grupa)
            {
                case "Unosi":
                    doc.Load(AppDomain.CurrentDomain.BaseDirectory + "\\OstaliResursi\\TreeViewItemsUnosi.xml");
                    provider.Document = doc;
                    provider.XPath = "/Unosi/Nivo1";
                    this.GlTreeView.SetBinding(TreeView.ItemsSourceProperty, new Binding() { Source = provider });
                    break;
                case "Izvestaji":
                    doc.Load(AppDomain.CurrentDomain.BaseDirectory + "\\OstaliResursi\\TreeViewItemsIzvestaji.xml");
                    provider.Document = doc;
                    provider.XPath = "/Izvestaji/Nivo1";
                    this.GlTreeView.SetBinding(TreeView.ItemsSourceProperty, new Binding() { Source = provider });
                    break;
                case "Obrade":
                    doc.Load(AppDomain.CurrentDomain.BaseDirectory + "\\OstaliResursi\\TreeViewItemsObrade.xml");
                    provider.Document = doc;
                    provider.XPath = "/Obrade/Nivo1";
                    this.GlTreeView.SetBinding(TreeView.ItemsSourceProperty, new Binding() { Source = provider });
                    break;
                case "Obracuni":
                    doc.Load(AppDomain.CurrentDomain.BaseDirectory + "\\OstaliResursi\\TreeViewItemsObracuni.xml");
                    provider.Document = doc;
                    provider.XPath = "/Obracuni/Nivo1";
                    this.GlTreeView.SetBinding(TreeView.ItemsSourceProperty, new Binding() { Source = provider });
                    break;
                default:
                    break;
            }
            GlTreeView.Focus();
        }

Izvršavanje komande je moguće klikom na TreeView ili pritiskom na taster <ENTER>.
Code:

        private void GlTreeView_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Space)
            {
                e.Handled = true;
                IzvrsiKomandu();
            }
        }
        private void GlTreeView_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            try
            {
                if (((System.Xml.XmlElement)GlTreeView.SelectedItem).HasChildNodes == false)
                {
                    IzvrsiKomandu();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

Primeti da je u slučaju kada je TreeView bindovan za XML, TreeView.SelectedItem u stvari XmlElement.
Metoda IzvrsiKomandu, u zavisnosti od odabrane vrste komandi i naziva izabranog Item-a upućuje na otvaranje nekog prozora (ili bilo šta drugo).
Code:

        private void IzvrsiKomandu()
        {
            if (GlTreeView.SelectedItem != null)
            {
                string OdabranaKomanda = ((System.Xml.XmlElement)GlTreeView.SelectedItem).Attributes["Name"].Value.ToString();
                switch (OdabranaGrupaKomandi)
                {
                    case "Unosi":
                        IzvrsiKomanduUnosi(OdabranaKomanda);
                        break;
                    case "Izvestaji":
                        IzvrsiKomanduIzvestaji(OdabranaKomanda);
                        break;
                    case "Obrade":
                        IzvrsiKomanduObrade(OdabranaKomanda);
                        break;
                    case "Obracuni":
                        IzvrsiKomanduObracuni(OdabranaKomanda);
                        break;
                    default:
                        break;
                }
            }
        }

        private void IzvrsiKomanduUnosi(string komanda)
        {
            switch (komanda)
            {
                case "Vlasnik" :
                    ProzorVlasnik();
                    break;
                case "Organizacione jedinice":
                    ProzorOrganizacioneJedinice();
                    break;
                case "Podaci o zaposlenima" :
                    ProzorZaposleni();
                    break;
                default:
                    MessageBox.Show("Odaberite komandu.");
                    break;
            }
        }

        private void ProzorVlasnik()
        {
            Vlasnik v = new Vlasnik();
            v.Inicijalizacija();
            v.ShowDialog();
        }

Nadam se da će ovo pomoći.
Pozdrav.
 
Odgovor na temu

[es] :: .NET :: WPF Programiranje :: Kako otvoriti prozor u okviru drugog?

[ Pregleda: 1968 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.