Pregunta

Actualmente estoy en la fase de planificación de un proyecto mío.

Pensé en usar el MVVM-patrón para mi solicitud de la capacidad de prueba, mantenimiento, etc. Yo sólo han empezado a darle vueltas MVVM pero hay una cosa que yo no puedo entender en el contexto de mi aplicación planificada .

Mi aplicación tiene como objetivo ayudar a los entrenadores deportivos con su planificación de ejercicios por lo que les permite visualmente ejercicios de captura. Es un tipo de pintura para entrenadores deportivos.

Ya pensé en la manera de aplicar las diferentes PaintObjects (eso es lo que los llamo) para mi aplicación (por ejemplo: bola, jugador, etc.) y han encontrado la forma más conveniente de hacerlo es escribir una clase con un número de DependencyProperties y luego suministrar una XAML-ControlTemplate para esta clase.

Ahora, cuando pienso en la estructuración de la pantalla de la pintura de mi solicitud pensé que podría utilizar algo como PaintView.xaml con un PaintViewModel.cs. Ahora la pregunta es ¿cómo almacenar el PaintViewModel los PaintObjects? ¿Cuáles son PaintObjects de todos modos? ¿Son ViewModels sí mismos? ¿Son los modelos? ¿Son puntos de vista?

Esa es la parte en la que estoy totalmente atascado thoughtwise y con la esperanza de obtener algunos consejos por más MVVM usuarios experimentados. Gracias de antemano!

Saludos cordiales, crischu

¿Fue útil?

Solución

Mantener una separación entre sus máquinas virtuales (que debería ser POCOs ) y puntos de vista. Sus máquinas virtuales no debe tener una dependencia duro en sus puntos de vista, porque eso hace que sea difícil para poner a prueba de forma aislada.

Así que por los sonidos de la misma, necesitará algo en su máquina virtual para representar las diversas partes y piezas en sus escenas (BallViewModel, PlayerViewModel etcétera). Estos podrían estar expuestos a partir de una SceneViewModel:

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

    ...
}

public abstract class SceneObjectViewModel : ViewModel
{
    ...
}

public class BallViewModel : SceneObjectViewModel
{
    ...
}

A continuación, su SceneView se uniría a la colección y mostrar cada elemento utilizando 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>

El XAML anterior asume sus DataTemplates están definidos en otros lugares, y que cada uno tiene un SceneObjectViewModel Top y Left propiedad.

Otros consejos

Hola intentar ver la Compuesto guidence Solicitud de WPF y Silverlight

Tiene MVVM en el interior que, además de algunos otros ... podría ayudar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top