Guten Morgen
Ich habe ein bestehendes Window, das im XAML so aussieht:
Nun wird in diesem Window dynamisch jeweils ein UserControl angezeigt durch den ContentPresenter. Dazu habe ich in der Application.xaml z.B. das hier:
Das Viewmodel wird also per Binding an den ContentPresenter übergeben und die entsprechende View (ein UserControl) zugeordnet.
Nun möchte ich eine Farbanimation durch Code Behind zufügen, allerdings nur, wenn ein bestimmtes ViewModel geladen wird. Animiert werden sollen
Dabei habe ich in der entsprechenden View, die dann in dem Fenster angezeigt wird, mehrere Elemente. Von einem davon wird die Farbe per Code Behind geändert, die Farben der anderen Controls sind durch ElementBinding daran gebunden.
Wie kann ich also BorderBrush des Windows und Background des Labels per ElementBinding an die Farbe des einen Controls binden, dessen Farbe animiert wird? Das UserControl ist ja sozusagen ein Child (?) des Windows...
Oder sollte ich den Code mit der Farbanimierung anstattdessen in den Code Behind des Windows packen und genau andersrum verfahren, die Farben der Controls in meinem UserControl an die Farbe des Labels im Window binden?
Oder fällt euch vielleicht eine andere Rangehensweise noch ein, die ich nicht bedacht hab?
Zur Entwicklungszeit weisss das Window ja dabei nicht , welches UserControl in ihm angezeigt wird.
Hab das gestern mal zwei Stunden gegoogelt und konnte einfach nichts passendes für diesen bestimmten Fall gefunden.
Wenn ihr mehr Code braucht, einfach bitte kurz melden
Ich habe ein bestehendes Window, das im XAML so aussieht:
XML-Quellcode
- <Window x:Class="DialogFenster"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:Skalierung="clr-namespace:VamosALaPlayer_3._0.ViewModel.SkalierenVerhindern;assembly=VamosALaPlayer_3._0.ViewModel"
- xmlns:local="clr-namespace:VamosALaPlayer_3._0.View"
- mc:Ignorable="d"
- Background="Black" BorderBrush="{DynamicResource VordergrundfarbeBrush}" BorderThickness="1">
- <Skalierung:DpiDecorator>
- <Grid>
- <Grid.RowDefinitions>
- <RowDefinition Height="28"/>
- <RowDefinition Height="*"/>
- </Grid.RowDefinitions>
- <Label FontWeight="Bold" FontSize="13" Foreground="Black" Background="{DynamicResource VordergrundfarbeBrush}" Grid.Row="0" MouseLeftButtonDown="Label_MouseLeftButtonDown"/>
- <ContentPresenter Content="{Binding}" Grid.Row="1"/>
- </Grid>
- </Skalierung:DpiDecorator>
- </Window>
Nun wird in diesem Window dynamisch jeweils ein UserControl angezeigt durch den ContentPresenter. Dazu habe ich in der Application.xaml z.B. das hier:
Das Viewmodel wird also per Binding an den ContentPresenter übergeben und die entsprechende View (ein UserControl) zugeordnet.
Nun möchte ich eine Farbanimation durch Code Behind zufügen, allerdings nur, wenn ein bestimmtes ViewModel geladen wird. Animiert werden sollen
BorderBrush
des Windows und Background
des Labels.Dabei habe ich in der entsprechenden View, die dann in dem Fenster angezeigt wird, mehrere Elemente. Von einem davon wird die Farbe per Code Behind geändert, die Farben der anderen Controls sind durch ElementBinding daran gebunden.
Wie kann ich also BorderBrush des Windows und Background des Labels per ElementBinding an die Farbe des einen Controls binden, dessen Farbe animiert wird? Das UserControl ist ja sozusagen ein Child (?) des Windows...
Oder sollte ich den Code mit der Farbanimierung anstattdessen in den Code Behind des Windows packen und genau andersrum verfahren, die Farben der Controls in meinem UserControl an die Farbe des Labels im Window binden?
Oder fällt euch vielleicht eine andere Rangehensweise noch ein, die ich nicht bedacht hab?
Zur Entwicklungszeit weisss das Window ja dabei nicht , welches UserControl in ihm angezeigt wird.
Hab das gestern mal zwei Stunden gegoogelt und konnte einfach nichts passendes für diesen bestimmten Fall gefunden.
Wenn ihr mehr Code braucht, einfach bitte kurz melden