Entwickler-Ecke

C# - Die Sprache - WPF - Variable aus Mainwindow in anderm Window aufrufen


Deutron - Mi 27.04.11 10:22
Titel: WPF - Variable aus Mainwindow in anderm Window aufrufen
Hi,
bin noch nicht lange am Programmieren und bräuchte mal Hilfe hab kein Plan, was ich dazu in die SuFu hauen soll.
Das Problem ist ähnlich wie bei meinem Vorgänger, ich habe ein Mainwindow, in dem wird eine Variable gefüllt.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
  private void button8_Click(object sender, RoutedEventArgs e)
       {
           try
           {
            var obj = (tbladdressDataGrid.SelectedItem as DataRowView).Row as DataRow;
            var objValue = obj["fldid"];

            string pupid = objValue.ToString();

            Window4 addupdate = new Window4();
            addupdate.Show();
            }
            catch
            {
            MessageBox.Show("Wählen sie einen Datensatz aus.","Hinweis");
            }
        }


Dieser Variablenwert soll in Public convertiert werden, welcher auch ordentlich gefüllt wird


C#-Quelltext
1:
2:
3:
4:
5:
  public MainWindow()
        {
            InitializeComponent();
        }
        public static string pupid;


und im andern Window soll dieser wieder aufgerufen werden.:


C#-Quelltext
1:
string id = MainWindow.pupid;                    


doch genau dort ist der Wert wieder Null,
Warum ist das so?

Bitte um Hilfe :(

mfg


qwertzio - Mi 27.04.11 10:50

moin :D


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:
var objRow = xamDataGridAdressen.ActiveRecord as Infragistics.Windows.DataPresenter.DataRecord;

                if (objRow == null)
                {
                    MessageBox.Show("Bitte eine Zeile auswählen!""Keine Zeile ausgewählt!");
                    return;
                }

                var fldidValue = objRow.Cells["fldid"].Value;
                var name01Value = objRow.Cells["fldname01"].Value;
                var name02Value = objRow.Cells["fldname02"].Value;
                var name03Value = objRow.Cells["fldname03"].Value;
                var strasseValue = objRow.Cells["fldstrasse"].Value;
                var plzValue = objRow.Cells["fldplz"].Value;
                var ortValue = objRow.Cells["fldnort"].Value;
                var landValue = objRow.Cells["fldland"].Value;
                var telefonValue = objRow.Cells["fldtelefon"].Value;
                var emailValue = objRow.Cells["fldemail"].Value;


                //w1ID = Convert.ToString(fldidValue);

                Window5 w5 = new Window5();

                w5.textBoxID.Text = Convert.ToString(fldidValue);


                w5.Show();


hier sollte ich dir ja posten haste gesagt ;)

der code steht im mainwindow wenn du den button klickst

lg


Deutron - Mi 27.04.11 10:55

Danke damit kann ich schonmal weiter machen, hoffe das lässt sich auf meins Übertragen.


Th69 - Mi 27.04.11 10:57

Hallo Deutron,

mittels

C#-Quelltext
1:
string pupid = objValue.ToString();                    

erzeugst du ja eine neue lokale Variable (und benutzt nicht die MainWindow-Variable).

Euer Code sieht aber inhaltlich fast identisch aus - ist das eine Schul-/Projekt/Uni-Aufgabe???


qwertzio - Mi 27.04.11 11:00

ja wir sind beide im praktikum in der selben firma und sitzen uns gegenüber :)

nur er programmiert mit visual studio 10 und ich mit 08 + net advantage 9.2

also leichte unterschiede in den projekten deswegen müssen wir immer n bissl rumfragen in den foren :D


IsNull - Do 28.04.11 15:32

Das hier wäre für euch ne gute Einsteiger-Lektüre in WPF: http://msdn.microsoft.com/de-de/magazine/dd419663.aspx

Kurz: Wenn ihr WPF nutzt als wäre es eine Win-Forms Anwenung handelt ihr euch lediglich Frust ein. WPF ist darauf ausgelegt dass man Daten Objekte auf die View bindet, und nicht in der View-Klasse (z.B. in Fenstern/Controls) seine Logik sowie Daten aufbewahrt. Dies ist sowieso nie eine gute Idee, denn sobald deine Daten in mehreren Fenstern aktualisiert werden, bist du froh wenn die Domain Objekte an zentraler Stelle existieren ;)