2017-05-08 3 views
0

Ich habe eine einfache ComboBox in einer MVVM-App.
Die wichtigen Dinge im Inneren des ComboBox sieht wie folgt aus:Lassen Sie eine ComboBox in WPF blinken

<ComboBox Name="EmployeesComboBox" 
       ItemsSource="{Binding EmployeeEntries}" 
       SelectedValuePath="Id" 
       SelectedValue="{Binding Id}" 
       Width="192" FontFamily="Arial" FontSize="12"> 
     <ComboBox.Resources> 
      <Storyboard x:Key="BlinkingStoryboard"> 
       <ColorAnimation Storyboard.TargetProperty="Background.Color" Duration="0:0:2" 
         From="White" To="Yellow" RepeatBehavior="Forever" AutoReverse="True" /> 
      </Storyboard> 
     </ComboBox.Resources> 
    </ComboBox> 

ich sogar den Stil des XAML des ToggleButton geändert (innerhalb der ComboBox Style-Definitionen) wie folgt:

<Style x:Key="ComboBoxToggleButton" TargetType="{x:Type ToggleButton}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ToggleButton}"> 
       <Border x:Name="templateRoot" 
         BorderBrush="{StaticResource ComboBox.Static.Border}" 
         BorderThickness="{TemplateBinding BorderThickness}" 
         Background="{TemplateBinding Background}" SnapsToDevicePixels="true"> 
        <Border x:Name="splitBorder" 
          BorderBrush="Transparent" BorderThickness="1" 
          HorizontalAlignment="Right" Margin="0" 
          SnapsToDevicePixels="true" 
          Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}"> 
         <Path x:Name="arrow" Data="F1 M 0,0 L 2.667,2.66665 L 5.3334,0 L 5.3334,-1.78168 L 2.6667,0.88501 L0,-1.78168 L0,0 Z" 
           Fill="{StaticResource ComboBox.Static.Glyph}" 
           HorizontalAlignment="Center" Margin="0" 
           VerticalAlignment="Center"/> 
        </Border> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

(Ich habe die meisten der Definition aus dem ursprünglichen Stil und änderte nur die Background="{StaticResource ComboBox.Static.Background}" in die Background="{TemplateBinding Background}"
Danach könnte ich die Hintergrund-Eigenschaft innerhalb der XAML verwenden, um die Farbe der ComboBox wie vorgesehen ändern, aber ich muss fi re das StoryBoard, damit ich die ComboBox programmtechnisch "blink".
Sobald ich das Storyboard starte, stürzt die App ab (Timer funktioniert nicht mehr, usw.) ohne Fehlermeldung.
Wer eine Idee, was ich vermisse?

Antwort

0

Sie müssen einen Verweis auf das Storyboard im Code erhalten, damit Sie es starten können. Siehe Call a storyboard declared in xaml from c# (natürlich ist deins in den Combobox-Ressourcen definiert, so dass Sie es von dort bekommen müssten).

Bearbeiten: um mehr Informationen über Fehler zu erhalten, aktivieren Trace-Einstellungen für WPF in Visual Studio-Einstellungen - Debugging/Ausgabefenster, dann im Ausgabefenster für alle Warnungen/Fehler suchen.

+0

Aus dem Code dahinter rufe ich das Storyboard auf und es wird gefunden, aber es funktioniert nicht. Ich verwende ein einfaches Storyboard animationStoryboard = (Storyboard) EmployeesComboBox.FindResource ("BlinkingStoryboard"); 'und dann' animationStoryboard.Begin(); ' –

+1

Sie müssen dann mehr Informationen erhalten; Aktivieren Sie in Visual Studio Einstellungen für das Debugging/Ausgabefenster (oder wenn bereits aktiviert, suchen Sie im Ausgabefenster nach Warnungen/Fehlern). –

+0

Ok, jetzt habe ich die Ausnahme, dass es kein Ziel für die Animation gab. Ich habe es mit Storyboard.TargetName = "ExployeesComboBox" eingerichtet und jetzt funktioniert es gut. Vielen Dank. Bitte ändere den Text deiner Antwort auf den deines Kommentars und ich kann es eine Lösung nennen;) –