none
Trigger Problem mit IsFocused Is Pressed RRS feed

  • Frage

  • Für einen Button habe ich ein template definiert:

     

    <Setter Property="Template">
    <Setter.Value>
    <ControlTemplate TargetType="{x:Type ButtonBase}">
    <ControlTemplate.Resources>
    <Storyboard x:Key="Press">
    <DoubleAnimationUsingKeyFrames ...">
    <SplineDoubleKeyFrame .../>
    </DoubleAnimationUsingKeyFrames>
    ...
    </Storyboard>
    <Storyboard x:Key="Release">
    ...
    </Storyboard>
    </ControlTemplate.Resources>
    <Grid x:Name="Grid" >
    <Rectangle x:Name="Base"... /> <Microsoft_Surface_Presentation_Generic:SurfaceShadowChrome ... />
    <ContentPresenter x:Name="Content"
    ...>
    </ContentPresenter>
    </Grid>
    <ControlTemplate.Triggers>
    <Trigger Property="IsPressed"
    Value="True">
    <Trigger.EnterActions>
    <BeginStoryboard Storyboard="{StaticResource Press}" />
    </Trigger.EnterActions>
    <Trigger.ExitActions>
    <BeginStoryboard Storyboard="{StaticResource Release}" />
    </Trigger.ExitActions>
    </Trigger>
    <Trigger Property="IsEnabled"
    Value="True" />
    <Trigger Property="IsEnabled"
    Value="False">
    <Setter Property="Stroke" Value="..." TargetName="Base" />
    <Setter Property="Foreground"
    Value="..." />
    <Setter Property="Background"
    Value="..." />
    </Trigger>

    <Trigger Property="IsFocused" Value="True">
    <Setter Property="Foreground" Value="..." />
    <Setter Property="Background" Value="..." />
    </Trigger>
    </ControlTemplate.Triggers>
    </ControlTemplate>
    </Setter.Value>

    Das Problem ist nun, dass wenn der fokussierte Button gedrückt ist, das Storyboard "IsPressed" nicht abgespielt wird, man also gar nicht sieht, ob der Button gedrückt wurde. Was muss ich tun, damit diese Animation gestartet wird?

     


    Edit: Ein Lösungsansatz wäre wohl den Pressed Trigger nochmals innerhalb des IsFocused-Triggers zu definieren. Dies wird jedoch leider nicht unterstützt...
    Donnerstag, 7. April 2011 13:54

Antworten

  • Hallo Code4132,

    sieht eigentlich gut aus. Ggfs. nimm für den "IsFocused" einen MultiTrigger mit "IsPressed" Value="False". Also:

    <MultiTrigger>

    <MultiTrigger.Conditions>

    <Condition Property="IsFocused" Value="True" />

    <Condition Property="IsPressed" Value="False" />

    </MultiTrigger.Conditions>

    ...

    </MultiTrigger>

     

    Viele Grüße

    Christoph

    Samstag, 13. August 2011 19:59

Alle Antworten

  • Hallo Code4132,

    sieht eigentlich gut aus. Ggfs. nimm für den "IsFocused" einen MultiTrigger mit "IsPressed" Value="False". Also:

    <MultiTrigger>

    <MultiTrigger.Conditions>

    <Condition Property="IsFocused" Value="True" />

    <Condition Property="IsPressed" Value="False" />

    </MultiTrigger.Conditions>

    ...

    </MultiTrigger>

     

    Viele Grüße

    Christoph

    Samstag, 13. August 2011 19:59
  • Hallo Code4132,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert

    Montag, 29. August 2011 11:30
    Moderator