Behaviors funktionieren in Style Setter nicht richtig
In meiner Windows-Runtime-App habe ich ein Thema mit einem Stil mit einemBehavior
für die DoubleTapped-Aktion definiert:
Dies sind die XML-Namespaces:
xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
Und das ist der Stil:
<Style x:Name="DisplayImage" TargetType="ScrollViewer">
<Setter Property="VerticalScrollBarVisibility" Value="Hidden" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="ZoomMode" Value="Disabled" />
<Setter Property="i:Interaction.Behaviors">
<Setter.Value>
<i:BehaviorCollection>
<core:EventTriggerBehavior EventName="DoubleTapped">
<local:ScrollViewerDoubleTap />
</core:EventTriggerBehavior>
</i:BehaviorCollection>
</Setter.Value>
</Setter>
</Style>
Das ist meinBehavior
:
[DefaultEvent(typeof(ScrollViewer),"DoubleTapped")]
public class ScrollViewerDoubleTap : DependencyObject, IAction
{
public object Execute(object sender, object parameter)
{
ScrollViewer sv = (ScrollViewer)sender;
if (sv.HorizontalScrollBarVisibility == ScrollBarVisibility.Disabled)
{
sv.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden;
}
else
{
sv.HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled;
}
return sender;
}
}
Und so benutze ich es:
<ScrollViewer Style="{StaticResource Image}" MaxWidth="1067">
<Border BorderBrush="Black" BorderThickness="1">
<Image Source="MyImage.png"/>
</Border>
</ScrollViewer>
Wenn ich auf das erste Bild einer Seite mit diesem Stil zweimal tippe, funktioniert es einwandfrei. Wenn ich jedoch zweimal auf die anderen Bilder auf der Seite tippe, wird der Verhaltenscode nie ausgeführt. Ich weiß, dass es nie ausgeführt wird, weil ich es mit Haltepunkten ausgeführt habe. Wenn ich zweimal auf das erste, aber nicht auf das zweite Bild tippe, wird es unterbrochen. Ich freue mich über Tipps, warum dies geschieht.