none
DataContext "überspringen" RRS feed

  • Frage

  • Hallo!

    Ich habe einen DataContext (Tabelle der Programm-Benutzerberechtigungen) auf das unterste Element meiner Anwendung (Fenster) gelegt, damit ich von "überall" per Binding Berechtigungs abhängige Objekte sperren/freigebn kann.

    private void wndInfo_Loaded(object sender, RoutedEventArgs e)
            {
    ...
                this.DataContext = tabBenutzer;   // Benutzer-Berechtigung(en) dem gesamten Fenster zur Verfügung stellen
    ...
    }

    Einem übergeordneten Container ordne ich aber auch einen (anderen) DataContext zu:

    tcInfoDetail.DataContext = dtInfos;  // Info-Daten dem TabControl bereitstellen
    

    Wie muss ich das Binding eines Objektes in dem übergeordneten Container setzen, damit es auf den DataContext des darunterliegenden Objektes zugreift???

    So funktioniert es nicht:

     <CheckBox IsChecked="{Binding Path=this.tabBenutzer.WARNTON_VERTRIEB}" />
    

    so auch nicht:

    <CheckBox IsChecked="{Binding Path=wndInfo.WARNTON_VERTRIEB}" />

    Mittwoch, 10. Oktober 2012 13:08

Antworten

  • Hallo!

    Dem Objekt im Container muss explizit ein DataContext zugewiesen werden, damit das Objekt nicht den DataContext dieses Containers verwendet.

    So funktioniert es:

    <CheckBox IsChecked="{Binding WARNTON_VERTRIEB}" DataContext="{Binding ElementName=wndInfo, Path=DataContext}" />
    • Als Antwort markiert perlfred Mittwoch, 10. Oktober 2012 14:32
    • Bearbeitet perlfred Donnerstag, 11. Oktober 2012 10:24 Formatierung
    Mittwoch, 10. Oktober 2012 14:31

Alle Antworten

  • Hallo!

    Ich glaube, ich bin der Lösung ein Stück näher gekommen...

    Ich muss dem Objekt in dem übergeordnetem Container explizit einen DataContext (den DataContext des untergeordneten Objektes [in meinem Fall dem DataContext des Fensters]) zuweisen:

    <CheckBox IsChecked="{Binding WARNTON_VERTRIEB}" DataContext="{Binding wndInfo.DataContext}" />                         

    So funktioniert es aber leider noch nicht.

    Fred.

    Mittwoch, 10. Oktober 2012 14:23
  • Hallo!

    Dem Objekt im Container muss explizit ein DataContext zugewiesen werden, damit das Objekt nicht den DataContext dieses Containers verwendet.

    So funktioniert es:

    <CheckBox IsChecked="{Binding WARNTON_VERTRIEB}" DataContext="{Binding ElementName=wndInfo, Path=DataContext}" />
    • Als Antwort markiert perlfred Mittwoch, 10. Oktober 2012 14:32
    • Bearbeitet perlfred Donnerstag, 11. Oktober 2012 10:24 Formatierung
    Mittwoch, 10. Oktober 2012 14:31