繁体   English   中英

如何在Metro / WinRT中扩展视图

[英]How to extend views in Metro / WinRT

我正在四处尝试构建用于使用WinRT / Metro进行MVVM的复合部件。 我建立了自己的ViewBase,它是从UserControl派生的,因此可以使用它扩展我的视图:

using System;
using System.Linq;
using Windows.UI.Xaml.Controls;
using System.Collections.Generic;

public abstract class ViewBase : UserControl
{
    /// <summary>
    /// Initializes a new instance of the ViewBase class.
    /// </summary>
    public ViewBase() : base()
    {
        BindViewModelLocatorToView(viewModelLocator: GetViewModelLocator());
    }

    /// <summary>
    /// Defines a method that returns a view model locator to be used with this class.
    /// </summary>
    protected abstract IViewModelLocator GetViewModelLocator();


    /// <summary>
    /// Defines a method that Bind's the view model provided by the view locator to the view's data context.
    /// </summary>
    private void BindViewModelLocatorToView(IViewModelLocator viewModelLocator)
    {
        if (viewModelLocator != null)
        {
            DataContext = viewModelLocator.ViewModel;
        }
    }
}

当我尝试扩展用作视图的UserControl时,出现错误,该部分的父项必须与生成的部分的父项匹配。 当然,我不能更改生成的类的父级,因为它只是在重新构建时才更改。

我注意到在示例应用程序中,它们使用与“布局”页面相同的概念,但是我不确定它们如何设置设计器生成的部分以匹配。

有谁知道这是怎么做的?

您需要将XAML中的根元素更改为<ns:ViewBase> ,其中ns声明为类所在的名称空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM