我需要动态创建我的 View CardSmall 的实例。所以我决定使用 ItemsControl
。现在我想将 TranslateZoomRotateBehavior
附加到 ItemsControl
中的所有元素以进行触摸交互。如果我像这样在 ItemsControl 中创建一个元素,它就可以正常工作:
<ItemsControl>
<local:CardSmall>
<i:Interaction.Behaviors>
<ei:TranslateZoomRotateBehavior/>
</i:Interaction.Behaviors>
</local:CardSmall>
</ItemsControl>
但是一旦我定义了 ItemsSource
<ItemsControl ItemsSource="{Binding CardsCollection}" >
...
拖动与触摸的交互变得非常不稳定。不像它不流畅,但更像是没有提供。同时,与鼠标的拖动交互就像一个魅力。使用 MouseDragElementBehavior 具有类似的效果。但是,当定义了 ItemsSource 时,无论是触摸还是鼠标,它都不会通过触摸进行不稳定的控制。
有没有其他人遇到过这个并且有解决方案或替代方案?哦,顺便说一下,ScatterView 目前不是一个选择。
我发现了相同的行为,当触摸移动时摇晃得很厉害,但用鼠标移动时却很流畅。
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
x:Class="DragTest.MainWindow"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<DataTemplate x:Key="DataTemplate1">
<Grid Background="#FFE01E1E" Width="100" Height="100">
<i:Interaction.Behaviors>
<ei:TranslateZoomRotateBehavior RotationalFriction="1"
TranslateFriction="1"/>
</i:Interaction.Behaviors>
</Grid>
</DataTemplate>
<ItemsPanelTemplate x:Key="ItemsPanelTemplate1">
<Canvas Height="250" Width="250"/>
</ItemsPanelTemplate>
</Window.Resources>
<Grid DataContext="{Binding Source={StaticResource SampleDataSource}}">
<ItemsControl HorizontalAlignment="Left" Height="100" VerticalAlignment="Top"
Width="100" ItemTemplate="{DynamicResource DataTemplate1}"
ItemsSource="{Binding Collection}"
ItemsPanel="{DynamicResource ItemsPanelTemplate1}"/>
</Grid>
</Window>
我是一名优秀的程序员,十分优秀!