我的應用程序是沿着一個標準的兵圖示例,在那裏我基本上配售對象在規定的X,在畫布Y座標和渲染他們的線。作爲我的畫布上的Bing背景,我實際上有一堆線/路徑指令來繪製底層內容,並且需要放置的對象在用戶平移/縮放時「粘」到該底層內容。我使用MVVM框架(特別是MVVM光),並希望最終的解決方案是MVVM友好的,但現在需要解決的我不物體粘在底層的「地圖」,當用戶平移/翻譯的問題。MVVM友好的方式來平移/縮放手勢
我的主視圖是這樣的:在適當的所需X的各類LocationViewModels(RestaurantViewModel,ParkingGarageViewModel,等..)來呈現每個位置的定義
<Canvas Margin="10" Background="AliceBlue" IsManipulationEnabled="True" ManipulationStarting="manipulatingStarting" ManipulationDelta="manipulationDelta">
<view:MapView x:Name="viewContent">
<view:MapView.RenderTransform>
<MatrixTransform/>
</vw:MapView.RenderTransform>
</view:MapView>
<ItemsControl ItemsSource="{Binding Locations}"/>
</Canvas>
和我有不同的數據模板,y位置使用他們的看法。
現在,耽擱了主視圖代碼如下:
private void manipulatingStarting(object sender, System.Windows.Input.ManipulationStartingEventArgs e)
{
// just let the user pan/translate for now
e.Mode = System.Windows.Input.ManipulationModes.Translate;
}
private void manipulationDelta(object sender, System.Windows.Input.ManipulationDeltaEventArgs e)
{
MatrixTransform transform = viewContent.RenderTransform as MatrixTransform;
if (transform != null)
{
Matrix matrix = transform.Matrix;
matrix.Translate(e.DeltaManipulation.Translation.X, e.DeltaManipulation.Translation.Y);
transform.Matrix = matrix;
e.Handled = true;
}
}
這允許用戶平移/翻譯的MapView內容,但是從ItemsControl的綁定到畫布的對象不動與用戶的手勢。我是否需要以某種方式連接操縱事件以更新ItemsControl中每個項目的相對(x,y)?