Мое приложение выполняется в соответствии со стандартным примером карты Bing, где я по сути размещаю объекты в определенных точках x, y на холсте и отрисовываю их.Вместо карты Bing, выступающей в качестве фона на холсте, у меня фактически есть куча директив line / path для рисования базового контента, и нужно, чтобы размещенные объекты «прилипали» к этому базовому контенту, когда пользователь панорамирует / увеличивает.Я использую фреймворк mvvm (в частности, MVVM light) и хочу, чтобы окончательное решение было дружественным к mvvm, но сейчас мне нужно решить проблему, связанную с тем, что мои объекты не придерживаются базовой «карты», когда пользователь выполняет панорамирование / перевод.*
Мой основной вид выглядит следующим образом:
<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>
, и у меня есть различные шаблоны данных, определенные для различных типов LocationViewModels (RestaurantViewModel, ParkingGarageViewModel и т. Д.), Чтобы правильно отобразить каждое местоположение вжелаемое местоположение x, 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, привязанные к холсту, не перемещаются с помощью жестов пользователя.Нужно ли каким-то образом подключать событие манипуляции для обновления относительного (x, y) каждого из элементов в ItemsControl?