0

我正在製作一個MVVM的Windows 8程序,該程序與手機共享MVM部分。在WinRT中使用Windows Phone示例數據

我的問題是,當我嘗試在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手機使用XAML文件作爲WinRT的樣品?我怎樣才能解決這個錯誤?

謝謝:)

+0

可能的重複[如何使用DesignData來幫助開發Metro應用程序?](http://stackoverflow.com/q/11638437/50447) – 2013-03-19 21:14:57

+0

我已經閱讀過這個問題,但是我的問題有所不同。詳情請參閱解決方案。如果我的問題是無用的,它可以被關閉或刪除 – blueocean 2013-03-19 22:16:59

回答

1

很奇怪,但問題是,由於某種原因,編譯器不承認視圖模型類,即使他們那裏。

解決方法:刪除XAML示例數據文件,清除&build;然後重新創建XAML示例數據文件(內部使用相同的代碼!),就像一個魅力一樣。

2

創建使用示例數據的另一種方法是將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的一部分,並返回一個布爾值取決於您是否是在設計時間還是沒有,意味着當你運行應用程序時,它將始終返回false。 如果您正在爲Windows Phone和Silverlight進行開發,這將起作用。

如果您正在爲Windows應用商店開發,則可以使用Windows.ApplicationModel.DesignMode.DesignModeEnabled來檢查您是否在設計時。除此之外,它的工作方式也是一樣。

+0

謝謝,但正如我之前寫的,我已經找到了一個解決方案。無論如何,+1的答案:你的解決方案是不同的,並工作(在其他項目中使用類似的代碼)。 – blueocean 2013-03-20 15:50:48