代码之家  ›  专栏  ›  技术社区  ›  chrischu

MVVM模式用于类似油漆的WPF应用程序?

  •  3
  • chrischu  · 技术社区  · 16 年前

    我目前正在计划我的一个项目。

    我已经考虑过如何为我的应用程序(例如:Ball、Player等)实现不同的PaintObjects(我称之为PaintObjects),并且发现最方便的方法是编写一个具有许多依赖属性的类,然后为这个类提供一个XAML ControlTemplate。

    这是我完全陷入沉思的部分,我希望得到更有经验的MVVM用户的一些建议。提前谢谢!

    顺致敬意,

    2 回复  |  直到 16 年前
        1
  •  6
  •   Tim Cooper    13 年前

    should be POCOs

    因此,听上去,你需要在虚拟机中使用一些东西来表示场景中的各个部分( BallViewModel , PlayerViewModel 等等)。这些可能是暴露在空气中的 SceneViewModel :

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

    SceneView 将绑定到该集合并使用 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>
    

    以上XAML假设您的 在其他地方定义了,并且每个 SceneObjectViewModel 有一个 Top Left 所有物

        2
  •  0
  •   littlegeek littlegeek    16 年前

    嗨,看看这个 Composite Application Guidence for WPF and Silverlight

    它里面有MVVM,还有一些其他的。。。也许会有帮助。