none
Einfache Abfrage und Datenübergabe an Page RRS feed

  • Frage

  • gegeben ist ein Window, darin ein Frame und darin eine Page.

    Im Fenster wird eine Abfrage ausgeführt:

     Using MyAdapter As New MySqlDataAdapter("SELECT ..., connection)
                                        Using myTable As New DataTable()
                                            MyAdapter.Fill(myTable)
                                            page_lv_risiko.grd0_daten.DataContext = myTable.DefaultView
                                        End Using
                                    End Using
    
                                    page_lv_risiko.lv_risiko_id.Text = MyVarID
                                    frm_detail1.Source = New Uri("/CLIENTVISION;component/pages/page_lv_risiko.xaml", UriKind.Relative)

    Es wird zwar die Page im Frame geladen aber die Daten =

    page_lv_risiko.lv_risiko_id.Text = MyVarID

    werden nicht an die TextBox übergeben.

    Ich nehme an es muss mit dem Element Page zu tun haben denn bei Window funktioniert es ohne weiteres. Was mache ich hier falsch?

    Nachtrag: Im Element Page ist die TextBox so dargestellt:

      <Grid Name="grd0_daten">

            <TextBox Name="lv_risiko_id" Text="{Binding ds_vertrag_id}" Style="{DynamicResource TextBoxStyle1}"/>

    Ich habe es beim Laden der Page in folgender Art versucht:

      Me.lv_risiko_id.Text = "55"

    Das funktioniert ohne weiteres.

    Nachtrag:

    Schon diese einfache übergabe einer Zahl vom Fenster an die Page funktioniert nicht:

     page_lv_risiko.lv_risiko_nr.Text = "55"

    page_lv_risiko = page

    lv_risiko_nr = TextBox


    Es geht mir um WPF(XAML) Visual Studio Proff. 2010, VisualBasic, Win7 und verständliche Hilfe. Als Quelle nutze ich oft msdn Hilfe.



    • Bearbeitet Thomas2705 Montag, 18. November 2013 20:14
    Montag, 18. November 2013 19:55

Antworten

  • Sobald man die Control public macht, kann man alles an ihnen Verändern. Von der Höhe bishin zu irgendwelchen Datenbindungen. Das sollte normalerweise nicht möglich sein. (Reflection mal ausgenommen)

    Es sollte eher nach folgendem Muster aussehen:

    Class MyPage
    	Inherits Page
    	Protected tb As New TextBox()'Eigentlich im XAML'
    	Public Property VarId() As String
    		Get
    			Return tb.Text
    		End Get
    		Set
    			tb.Text = value
    		End Set
    	End Property
    End Class
    

    Im XAML kann man den Zugriffsmodifizierer wie folgt festlegen:

    <Button Name="btn" x:FieldModifier="private"/> 

    Es gehen natürlich auch public und protected für diese Eigenschaft.

    Solange kein anderer deinen Code verwendet, wird es nicht weiter stören. Nur wenn man doch mal ausversehen die falsche Eigenschaft verwendet, kann es mal schief gehen.



    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    • Als Antwort markiert Thomas2705 Montag, 18. November 2013 21:16
    Montag, 18. November 2013 20:28
    Moderator

Alle Antworten

  • Hallo,
    durch die Zuweisung von Source wird eine neue Instanz der jeweiligen Seite gebildet. Du müsstest also auf die Seite navigieren, von der du auch die Eigenschaft zuweist.
    frm_detail1.Navigate(page_lv_risiko)
    PS: Eigentlich macht man Controls nicht nach außen hin sichtbar, besserer wäre es für jede zu setztende Eigenschaft auch eine Entsprechende Eigenschaft in die eigene Page-Klasse zu implementieren.

    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Montag, 18. November 2013 20:05
    Moderator
  • Deine ANtwort scheint zu funktionieren. Ich will es noch etwas testen aber Dein P.S: verstehe ich nicht. Kannst DU mir es bitte etwas verständlicher erklären. Vielleicht mache ich es grundsätzlich schon immer falsch wenn ich es so schreibe.

    Es geht mir um WPF(XAML) Visual Studio Proff. 2010, VisualBasic, Win7 und verständliche Hilfe. Als Quelle nutze ich oft msdn Hilfe.

    Montag, 18. November 2013 20:18
  • Sobald man die Control public macht, kann man alles an ihnen Verändern. Von der Höhe bishin zu irgendwelchen Datenbindungen. Das sollte normalerweise nicht möglich sein. (Reflection mal ausgenommen)

    Es sollte eher nach folgendem Muster aussehen:

    Class MyPage
    	Inherits Page
    	Protected tb As New TextBox()'Eigentlich im XAML'
    	Public Property VarId() As String
    		Get
    			Return tb.Text
    		End Get
    		Set
    			tb.Text = value
    		End Set
    	End Property
    End Class
    

    Im XAML kann man den Zugriffsmodifizierer wie folgt festlegen:

    <Button Name="btn" x:FieldModifier="private"/> 

    Es gehen natürlich auch public und protected für diese Eigenschaft.

    Solange kein anderer deinen Code verwendet, wird es nicht weiter stören. Nur wenn man doch mal ausversehen die falsche Eigenschaft verwendet, kann es mal schief gehen.



    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    • Als Antwort markiert Thomas2705 Montag, 18. November 2013 21:16
    Montag, 18. November 2013 20:28
    Moderator
  • Ich danke Dir sehr für Deine Hilfe.

    Es geht mir um WPF(XAML) Visual Studio Proff. 2010, VisualBasic, Win7 und verständliche Hilfe. Als Quelle nutze ich oft msdn Hilfe.

    Montag, 18. November 2013 21:16