0

MVM部分を電話と共有するMVVMでWindows 8プログラムを作っています。

私の問題は、WinRT で Windows Phone プロジェクトの XAML サンプル データを使用しようとすると、大量のエラーが発生することです。私のXAMLは次のとおりです。

<vm:MyViewModel
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:MyApp.ViewModels" 
>

clr-namespace ディレクティブを使用しているため、これは明らかに問題があります。しかし、私がそれを

<vm:MyViewModel
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:MyApp.ViewModels" 
>

次のような同じ一連のエラーが発生します

The name "MyViewModel" does not exist in the namespace "using:MyApp.ViewModels"

Windows Phone のように、WinRT で XAML ファイルをサンプルとして使用できますか? このエラーを解決するにはどうすればよいですか?

ありがとう :)

4

2 に答える 2

2

サンプル データを作成するもう 1 つの方法は、d:DataContext を ViewMode に設定し、IsCreatableInDesignTime=True を設定して (コンストラクターを実行することを意味します)、コンストラクターでいくつかのサンプル オブジェクトを作成することです。

XAML:

xmlns:viewmodel="clr-namespace:SampleApp.ViewModels"
d:DataContext="{d:DesignInstance Type=viewmodel:SampleViewModel, IsDesignTimeCreatable=True}">

分離コード:

public SampleViewModel()
{
   if (DesignerProperties.IsInDesignTool)
   {
      //CREATE DESIGN TIME DATA HERE
   }

}

DesignerProperties.IsInDesignToolSystem.ComponentModelの一部であり、設計時かどうかに応じて bool を返します。つまり、アプリを実行すると、常に false が返されます。これは、Windows Phone および Silverlight 向けに開発している場合に機能します。

Windows ストア向けに開発している場合は、代わりにWindows.ApplicationModel.DesignMode.DesignModeEnabledを使用して、デザインタイムであるかどうかを確認できます。それ以外は同じように動作します。

于 2013-03-20T08:50:08.720 に答える
1

非常に奇妙ですが、問題は、何らかの理由で、コンパイラが ViewModel クラスを認識しなかったことです。

回避策: XAML サンプル データ ファイルを削除し、clean&build; 次に、XAML サンプル データ ファイルを再作成します (同じコードが含まれています)。

于 2013-03-19T22:14:57.583 に答える