none
Dynamische XAML RRS feed

  • Frage

  • Hallo.
    Ich habe folgendes Problem, ich muss ein Objekt darstellen, Parametern von welchem sich in einer XML befinden, also lese ich die Daten mit C# aus, forme eine neue Xaml und dann lade einen neuen Fenster, wo ich diese neue Xaml abbilde. Die Parametern von dem Objekt ändern sich (ich habe mehrere XML-File´s, die ausgelesen werden), deswegen soll das ganze dynamisch funktionieren, d.h. bei jedem Öffnen eines Files wird jedes mal eine neue Xaml mit neuen Punkten geformt.
    Soweit so gut funktioniert das ganze, ich kann die Xml-Dateien öffnen, und das Programm formt jedes Mal ein neues Xaml mit richtigen Punkten, aber jetzt muss ich Licht und Kamera einstellen und ich vermute, dass meine Vorgehensweise komplett falsch war, da ich mein Xaml so geformt habe

    xaml.Add(" <GeometryModel3D x:Name=" + '"' + "type5" + '"' + ">");
                xaml.Add("     <GeometryModel3D.Geometry>");
                xaml.Add("                <MeshGeometry3D  Positions=" + '"');
                xaml.Add(a0.gettxt() + ", " + a1.gettxt() + ", " + a2.gettxt() + ", " + a3.gettxt() + ", " + a4.gettxt() + ", " + a5.gettxt() + ", " + a6.gettxt() + ", " + a7.gettxt() + ", " + a8.gettxt() + ", " + a9.gettxt() + ", " + a10.gettxt() + ", " + a11.gettxt() + ", " + a12.gettxt() + ", " + a13.gettxt() + ", " + a14.gettxt() + ", " + a15.gettxt() + ", " + a16.gettxt() + ", " + a17.gettxt() + ", " + a18.gettxt() + ", " + a19.gettxt() + ", " + a20.gettxt() + ", " + a21.gettxt() + ", " + a22.gettxt() + ", " + a23.gettxt() + "\" ");
                xaml.Add("TriangleIndices=" + '"');
                xaml.Add("0 1 2, 2 3 0, 5 7 6, 6 4 5, 3 2 5, 2 7 5, 4 6 1, 1 0 4, 4 0 3, 3 5 4, 8 9 11, 11 10 8, 15 14 13, 13 12 15, 10 11 14, 14 15 10, 12 13 9, 9 8 12, 12 8 10, 10 15 12, 14 11 9, 9 13 14, 17 18 19, 19 16 17, 21 23 22, 22 20 21, 16 19 23, 23 21 16, 20 22 18, 18 17 20, 20 17 16, 16 21 20, 18 22 23, 23 19 18" + '"' + "/>");
                //xaml.Add("TriangleIndices=" + '"');
                xaml.Add("</GeometryModel3D.Geometry>");
                xaml.Add("<GeometryModel3D.Material>");
                xaml.Add("<DiffuseMaterial Brush=" + '"' + "Cyan" + '"' + "/>");
                xaml.Add(" </GeometryModel3D.Material>");

    Ich habe gedacht, dass es möglich ist in dem hochgeladenem Fenster Licht und Kamera einzustellen, aber es funktioniert nicht, wenn ich da irgendwelche WPF-Controlls reinschreibe, werden die von neuen geformten Xaml überschrieben(((( Vielleicht kennt irgendeiner die Möglichkeit, wie man es schaffen kann, dass man solche Sachen wie Licht, Kamera, Drehung, u.s.w. in einem Fenster schon vordefiniert und die dynamische Teile danach zugefügt werden, weil ich kann mir nicht vorstellen, dass es richtig sein wird, wenn ich diese Sachen, die immer vorhanden sind ( siehe oben) mit Gänsefüßchen formen muss((

    Das ist der Code, wie ich das Fenster hochlade, wo ich dann meien neugeformte Xaml abbilde
           public
     void
     LoadXAML()
            {
                try
    
                {
                    StreamReader sReader = new
     StreamReader("3D.xaml"
    );
                    DependencyObject doRoot = XamlReader.Load(sReader.BaseStream) as
     DependencyObject;
                    this
    .Content = doRoot;
                    this
    .Show();
                }
                catch
     (FileNotFoundException ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }
                catch
     (Exception e)
                {
                    MessageBox.Show(e.Message.ToString());
                }
            }
            public
     void
     Button_Click(object
     sender, RoutedEventArgs e)
            {
                MessageBox.Show("Call from loaded XAML"
    );
            }<br/>
          }
        }
    
    Für jede Hilfe bedanke ich mich schon in vorraus)))
    Dienstag, 11. August 2009 13:07

Alle Antworten