2

これと同じことを知りたいのですが、 Silverlight 4はx:TypeArgumentsをサポートして いますが、Windows8ストアアプリをサポートしています。

x:TypeArgumentsが機能しないのに、なぜ利用できるのですか?それとも私は何かが足りないのですか?x:TypeArgumentsがXAMLで定義されている場合でも、MainPage.igcsファイルは非ジェネリック基本クラスで自動生成されるため、もちろんコンパイルされません。

ジェネリック型を指定する「typedef」基本クラスを持つという提案された回避策で動作させることができますが、これは私にはかなりハックな感じがします。

// A generic PageBase, containing standard ViewModel-related utilities
internal abstract class PageBase<T> : Windows.UI.Xaml.Controls.Page where T : ViewModelBase
{
    protected abstract T ViewModel { get; }
    ...
}

// The hack...
internal abstract class MainPageTypeDef : PageBase<MainViewModel>
{
    // No code goes here...
}

// The page itself
internal sealed partial class MainPage : MainPageTypeDef
{
}

<views:PageBase
    ...
    x:Class="Namespace.MainView"
    x:TypeArguments="store:MainViewModel">

「typedef」クラスを持たない方法があるかどうか誰かが知っていますか?

どうもありがとう、ジョン

4

2 に答える 2

3

残念ながらそれは不可能です。Microsoftの連絡先から決定的な回答を得ました。「確認できますが、Xamlでのx:TypeArgumentsの使用は、サポートされているシナリオのWindowsストアアプリではありません。」

于 2013-01-25T12:02:05.183 に答える
0

答えはSilverlightの場合と同じだと確信しています。WinRT Xamlは、多くの点でWPFよりもSilverlight Xamlに近く、何を含めるか、何を含めないかについて、あらゆる種類の奇妙な決定を下しました。

于 2013-01-24T01:05:58.567 に答える