Question

Je suis actuellement dans la phase de planification d'un projet de la mine.

Je pensais à l'aide de la MVVM-modèle pour ma demande de testabilité, maintenabilité, etc. je n'ai commencé à obtenir ma tête autour MVVM mais il y a une chose que je ne peux pas comprendre dans le contexte de ma demande prévue .

Ma demande vise à aider les entraîneurs sportifs avec leur planification de l'exercice en leur permettant visuellement des exercices de capture. Il est une sorte de peinture pour les formateurs sportifs.

Je l'ai déjà pensé à la façon de mettre en œuvre les différents PaintObjects (c'est ce que je les appelle) pour mon application (par exemple: Ball, joueur, etc.) et ont trouvé le moyen le plus pratique de le faire est d'écrire une classe avec un nombre de DependencyProperties puis fournir un XAML-ControlTemplate pour cette classe.

Maintenant, quand je pense à la structuration de l'écran de la peinture de mon application, je pensais que je voudrais utiliser quelque chose comme PaintView.xaml avec un PaintViewModel.cs. Maintenant, la question est de savoir comment le PaintViewModel stocker les PaintObjects? Quels sont PaintObjects de toute façon? Sont-ils eux-mêmes ViewModels? Sont-ils des modèles? Sont-ils vues?

C'est la partie où je suis totalement bloqué thoughtwise et l'espoir d'obtenir des conseils par MVVM utilisateurs plus expérimentés. Merci d'avance!

Cordialement, crischu

Était-ce utile?

La solution

Gardez une séparation entre vos machines virtuelles (qui devrait être Poços ) et des vues. Vos machines virtuelles ne devrait pas avoir une dépendance dur sur votre point de vue, parce que cela fait qu'il est difficile de les tester dans l'isolement.

par les sons de celui-ci, vous aurez besoin de quelque chose dans votre VM pour représenter les différents morceaux dans vos scènes (BallViewModel, PlayerViewModel etcetera). Celles-ci pourraient être exposés à partir d'un SceneViewModel:

public class SceneViewModel : ViewModel
{
    public ICollection<SceneObjectViewModel> SceneObjects
    {
        get { ... }
    }

    ...
}

public abstract class SceneObjectViewModel : ViewModel
{
    ...
}

public class BallViewModel : SceneObjectViewModel
{
    ...
}

Ensuite, votre SceneView se lierait à cette collection et de rendre chaque élément en utilisant un DataTemplate:

<ItemsControl ItemsSource="{Binding SceneObjects}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemContainerStyle>
        <Style>
            <Setter Property="Canvas.Top" Value="{Binding Top}"/>
            <Setter Property="Canvas.Left" Value="{Binding Left}"/>
        </Style>
    </ItemsControl.ItemContainerStyle>
</ItemsControl>

Le XAML ci-dessus suppose que votre DataTemplates sont définis ailleurs, et que chaque SceneObjectViewModel possède une propriété Top et Left.

Autres conseils

Salut essayez de regarder cette Composite Application pour line Guide WPF et Silverlight

Il a MVVM à l'intérieur aussi bien que d'autres ... pourrait aider.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top