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??
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
Hallo MarsStein
Super, habe ich verstanden und hat auch geklappt!
Besten Dank