2 Stimmen

Wie aktualisiere ich einen wpf data trigger?

Ich habe das Raster mit dem Storyboard wie unten dargestellt.

   <Style.Triggers>
     <DataTrigger Value="True" Binding="{Binding Path=BlinkOrderAlert,Mode=TwoWay}">
       <DataTrigger.EnterActions>
        <BeginStoryboard x:Name="stry_BlinkOrdAlert" Storyboard="{StaticResource stry_OrderMsgShowHide}"/>
       </DataTrigger.EnterActions>
     </DataTrigger>
  </Style.Triggers>

und in meinem ViewModel.cs,

        private bool blinkOrderAlert;
        public bool BlinkOrderAlert
        {
            get
            {
                return blinkOrderAlert;
            }
            set
            {
                if (blinkOrderAlert == value)
                    return;
                this.blinkOrderAlert = value;
                this.RaisePropertyChanged(this, new PropertyChangedEventArgs("BlinkOrderAlert"));
            }
        }

        public void BlinkOrdAlert()
        {
                this.BlinkOrderAlert=false;
                this.BlinkOrderAlert = true;

        }
public ViewModel()
{
  this.BlinkOrderAlert=true;
}

und es funktioniert nur beim ersten Mal, wenn der Konstruktor initialisiert wird. Immer wenn ich die BlinkOrdAlert-Funktion aufrufe, funktioniert sie nicht mehr. Wie kann ich den DataTrigger ändern, um das Storyboard jedes Mal auszuführen, wenn ich die Funktion aufrufe? Danke.

2voto

Bathineni Punkte 3400

Erwägen Sie, den folgenden Datenauslöser zu Ihrem Style hinzuzufügen. Der folgende Datenauslöser entfernt das Storyboard, wenn der Wert von BlinkOrderAlert auf false gesetzt ist, und wenn der Wert true ist, wird das Storyboard hinzugefügt.

Ich hoffe, das wird helfen.

1voto

H.B. Punkte 140726

Sie sollten wirklich keinen DataTrigger für dies verwenden, versuchen Sie stattdessen eine Eigenschaft wie ein Ereignis zu verwenden, was ziemlich umständlich ist. Leider sind die nativen Trigger, sagen wir mal, nicht optimal, daher können Sie keinen EventTrigger verwenden, da er nur RoutedEvents unterstützt.

Aber Sie könnten möglicherweise ViewModel-Ereignisse mit dem EventTrigger aus Blend's Interactivity (Blend 3 SDK) verwenden, also könnte es einen Versuch wert sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X