2016-07-12 4 views
0

Hier habe ich diese Umschaltfläche, wie in Code unten gesehen. A control template ist auch für diese Umschaltfläche definiert. In einigen Szenarien wird diese Schaltfläche deaktiviert. dh ich cannot click auf dem Knopf mehr. Ich folge MVVM Muster. Ich habe Haltepunkte gesetzt und überprüft. Es gibt nichts im Zusammenhang mit dem Ändern der Tasten IsEnabled Zustand.Kann nicht herausfinden, wie die Umschalttaste deaktiviert wird

Seit den letzten 1 Stunde versuche ich herauszufinden, wie der Aktivierungszustand der Taste geändert wird. Es gibt nichts, was sich auf die aktivierte Statusänderung der Schaltfläche bezieht, oder irgendetwas, das mit dem Code dahinter zusammenhängt. Daher poste ich hier keinen unerwünschten Code hinter/zeige den Modellcode an.

Wenn Sie mir helfen können, herauszufinden, aus dem XAML-Code, wie der Button-Status zu deaktiviert geändert wird, oder welche Eigenschaft zu dieser Änderung führt, wird es sehr hilfreich sein. Danke im Voraus.

<ToggleButton x:Name="TestBtn" 
          Height="60" 
          Margin="5" 
          HorizontalAlignment="Stretch" 
          HorizontalContentAlignment="Center" 
          Command="{Binding StartStopResetCommand}" 
          Content="{Binding BtnState, 
              Converter={StaticResource BtnTextConverter}}" 
          FontSize="16" 
          Foreground="White" 
          PreviewKeyDown="BtnPreviewKeyDown"> 
       <ToggleButton.Style> 
        <Style TargetType="{x:Type ToggleButton}"> 
         <Setter Property="Template"> 
          <Setter.Value> 
           <ControlTemplate TargetType="{x:Type ToggleButton}"> 
            <Border x:Name="border" 
              Background="{TemplateBinding Background}" 
              BorderBrush="{TemplateBinding BorderBrush}" 
              BorderThickness=".5" 
              SnapsToDevicePixels="true"> 
             <ContentPresenter x:Name="contentPresenter" 
                  Margin="{TemplateBinding Padding}" 
                  HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                  VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
                  Focusable="False" 
                  RecognizesAccessKey="True" 
                  SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> 
            </Border> 
            <ControlTemplate.Triggers> 
             <Trigger Property="IsEnabled" Value="false"> 
              <Setter TargetName="contentPresenter" Property="TextElement.Foreground" Value="#595959" /> 
             </Trigger> 
            </ControlTemplate.Triggers> 
           </ControlTemplate> 
          </Setter.Value> 
         </Setter> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding BtnState}" Value="{x:Static my:ButtonState.Start}"> 
           <Setter Property="Background" Value="{StaticResource ButtonBackgroundBrush}" /> 
          </DataTrigger> 
          <DataTrigger Binding="{Binding BtnState}" Value="{x:Static my:ButtonState.Stop}"> 
           <Setter Property="Background" Value="{StaticResource ExecutingStateColor}" /> 
          </DataTrigger> 
          <DataTrigger Binding="{Binding BtnState}" Value="{x:Static my:ButtonState.Reset}"> 
           <Setter Property="Background" Value="{StaticResource ButtonBackgroundBrush}" /> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </ToggleButton.Style> 
      </ToggleButton> 
+5

Button-Status kann automatisch geändert werden, wenn Ihr "StartStopResetCommand" Aktion "CanExecute" implementiert und an einem bestimmten Zeitpunkt false zurückgibt. – Matas

+0

** Upvote. ** So schnell und präzise. Von so etwas wusste ich noch nichts. Vielen Dank. – ViVi

Antwort

1

Button-Zustand kann automatisch geändert werden, deaktiviert in diesem Fall, wenn Ihre StartStopResetCommand Geräte CanExecute Aktion und gibt an einem gewissen Punkt falsch.

Wenn Sie möchten, dass alle Steuerelemente ihren Status abhängig von Ihrer CanExecute aktualisieren, sollten Sie RaiseCanExecuteChanged auf Ihrem Befehl aufrufen.

+0

Danke. Perfekt funktioniert. – ViVi