我需要动态创建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现在不是一个选择。
答案 0 :(得分:0)
我发现了相同的行为,触摸时移动时非常糟糕,但用鼠标移动顺畅。
<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>