Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
ItemsControl: Template Datenbindung an Property ausserhalb der Source
BJA-CH
myCSharp.de - Member



Dabei seit:
Beiträge: 57
Herkunft: Schwyz, CH

Themenstarter:

ItemsControl: Template Datenbindung an Property ausserhalb der Source

beantworten | zitieren | melden

Hallo zäme
Ich habe ein ItemsControl, bei dem ich die darzustellenden Daten in einem ObservableControl<> übergebe.
Nun möchte ich aber, einige Darstellungsattribute, wie Strichdicke, Farbe usw. durch den Benutzer steuern lassen. Dazu habe ich in der aufrufenden MVVM-Klasse die entsprechenden Properties bereitgestellt.
Nun möchte ich eine Datenbindung in einige ausgewählte DataTemplate machen. Ich denke das müsste mit RelativeSource FindAncestor zu machen sein, doch das bekomme ich einfach nicht hin.
Ich habe es bis jetzt wie folgt versucht:
        <DataTemplate DataType="{x:Type kli:itemsSternbild}">
            <Line Stroke="{Binding Path=SternbildColor, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type vm:MainWindowViewModel}}}" StrokeThickness="{Binding Path=Thickness}"
                  X1="{Binding Path=X1}" Y1="{Binding Path=Y1}" X2="{Binding Path=X2}" Y2="{Binding Path=Y2}"
                  Visibility="{Binding ElementName=starBilderAnzeige , Path=IsChecked, Converter={StaticResource boolToVisibilityConverter}}"
                  ToolTipService.IsEnabled="{Binding ElementName=sternToolTip, Path=IsChecked}">

wobei "SternbildColor" das Property wäre und dieses liegt in der Hauptdatei "vm:MainWindowViewModel".

Weiss da jemand Rat??
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3429
Herkunft: Trier -> München

beantworten | zitieren | melden

Hallo,

über RelativeSource FindAncestor fndest Du für gewöhnlich Controls, nicht aber die ViewModels.
Das ViewModel müsste aber als DataContext im Control (bei Dir: im Window, wenn Deine Bezeichnungen stimmen) zu finden sein.
Das Binding müsste also so aussehen (beachte den Path und den Ancestortype):
<Line Stroke="{Binding Path=DataContext.SternbildColor, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}"/>

Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
private Nachricht | Beiträge des Benutzers
BJA-CH
myCSharp.de - Member



Dabei seit:
Beiträge: 57
Herkunft: Schwyz, CH

Themenstarter:

beantworten | zitieren | melden

Hallo MarsStein
Super, habe ich verstanden und hat auch geklappt!
Besten Dank
private Nachricht | Beiträge des Benutzers