0

WinRT/Metro で MVVM を実行するための複合パーツを構築しようとして遊んでいます。UserControl から派生した ViewBase を自分で作成したので、それを使用してビューを拡張できます。

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 を拡張しようとすると、このパーシャルの親が生成されたパーシャルの親と一致する必要があるというエラーが表示されます。もちろん、再構築時に元に戻るだけなので、生成されたクラスの親を変更することはできません。

含まれているサンプル アプリで、レイアウト対応ページと同じ概念を使用していることに気付きましたが、デザイナーが生成したパーシャルをどのように設定するのかわかりません。

これがどのように行われるか知っている人はいますか?

4

1 に答える 1

1

XAML のルート要素を に変更する必要があります<ns:ViewBase>nsは、クラスが含まれる名前空間として宣言されています。

于 2012-07-22T14:31:32.720 に答える