[英]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.