Mon application est sur le modèle d'un exemple de carte Bing standard où je place essentiellement des objets à des emplacements x, y définis dans le canevas et les restituer. Au lieu d'une carte Bing agissant comme arrière-plan sur ma toile j'ai en fait un tas de directives ligne/chemin pour dessiner le contenu sous-jacent et besoin que les objets placés "collent" à ce contenu sous-jacents. J'utilise le framework mvvm (en particulier MVVM light) et je souhaite que la solution finale soit compatible avec mvvm, mais pour l'instant, j'ai besoin de résoudre le problème de mon objet qui ne colle pas à la "map" sous-jacente.mvvm approche conviviale pour les mouvements de panoramique/zoom
Mon point de vue principale ressemble:
<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>
et j'ai différents modèles de données définis pour les différents types de LocationViewModels (RestaurantViewModel, ParkingGarageViewModel, etc ..) pour rendre chaque endroit approprié au x désiré , y emplacement en utilisant leur vue.
en ce moment, le code derrière mon écran principal ressemble:
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;
}
}
cette formule permet à l'utilisateur de pan/traduire le contenu MapView mais les objets de ItemsControl liés à la toile ne sont pas déplacent avec les gestes de l'utilisateur. Ai-je besoin de connecter l'événement de manipulation pour mettre à jour le relatif (x, y) de chacun des éléments dans ItemsControl?