Entwickler-Ecke

WPF / Silverlight - .net 3.0 XAML zur laufzeit laden?


JamesPond - Fr 28.12.07 13:47
Titel: .net 3.0 XAML zur laufzeit laden?
Hallo miteinander,

ich schreibe gerade an einer XAML GUI die ihr aussehen verändern kann (SKIN)! dazu hier folgender Quellcode:



C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
using System;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Markup;
using System.Xml;
using Microsoft.Win32;

namespace simpleXAML
{
    public class mainWindow : Window
    {
        static String Applstartpath;
        static readXML conf;

        [STAThread]
        public static void Main()
        {
            try
            {
                //Hauptapplication
                Application xamlApp = new Application();

                //hilfsOBJEKTE belegen (READER für Language und Config)
                Applstartpath = System.Reflection.Assembly.GetExecutingAssembly().Location.Remove(System.Reflection.Assembly.GetExecutingAssembly().Location.LastIndexOf("\\"));


conf = new readXML(Applstartpath);

                //OPTIONS-VARIABLEN
                //default-werte wenn keine angegeben!
                if (conf.read("skinpath").Equals(""))
                {
                    OpenFileDialog dlg = new OpenFileDialog();
                    dlg.Filter = "Alle Dateien (*.*)|*.*";
                    if ((bool)dlg.ShowDialog())
                    {
                        conf.write("skinpath", dlg.FileName);
                    }
                }

                //SKIN wird geladen
                XmlTextReader xmlReader = new XmlTextReader(conf.read("skinpath"));
                Window win = XamlReader.Load(xmlReader) as Window;

                //EVENTs einbinden
                Button btn1 = win.FindName("btn1l"as Button;

                if (btn1 != null)
                {
                    btn1.Click += cmdSkin;
                }

                xamlApp.Run(win);
            }

            catch (Exception expn)
            {
                MessageBox.Show(expn);
            }
        }

        static void cmdSkin(object sender, RoutedEventArgs args)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Filter = "Alle Dateien (*.*)|*.*";
            if ((bool)dlg.ShowDialog())
            {
                conf.write("skinpath", dlg.FileName);
            }
            MessageBox.Show("Bitte Starten sie den Klienten erneut um die neue Skin zu laden!");
        }
    }
}



So nun seht ihr selbst; das Programm funkiooniert, aber wie bekome ich diese Statischen Variablen und Funktionen weg? ...schon klar ich muss mir ein objekt der Hauptklasse erzeugen, aber wie mache ich das von der Hauptapplication?

....bitte bitte ein paar Tipps an ein neuling ....

danke vorab Augenzwinkern


Kha - Fr 28.12.07 19:30

[url=http://www.mycsharp.de/wbb2/thread.php?postid=262772#post262772]Cross-Posting[/url]


Mitmischer 1703 - Fr 28.12.07 20:35

Vom selben Autoren, mit denselben Rechtschreibfehlern... :twisted: