3

私は Windows Phone 8 プロジェクトに取り組んでおり、WPF と WP7 で長年行ってきたことを行っていますが、Windows Phone 8 では機能しないようです。別のプロジェクトを作成し、この問題のより単純な形式。新しい WP8 プロジェクトを作成し、次のことを行います。

1) 新しいクラス TestVM.cs を追加します。

class TestVM : DependencyObject
{
    public string TestProperty
    {
        get { return (string)GetValue(TestPropertyProperty); }
        set { SetValue(TestPropertyProperty, value); }
    }

    // Using a DependencyProperty as the backing store for TestProperty.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty TestPropertyProperty =
        DependencyProperty.Register("TestProperty", typeof(string), typeof(TestVM), new PropertyMetadata(string.Empty));
}

2) App.xaml を<Application.Resources />次のように変更します。

<!--Application Resources-->
<Application.Resources>
    <local:TestVM x:Key="MainVM" />
    <local:LocalizedStrings xmlns:local="clr-namespace:VMTest" x:Key="LocalizedStrings"/>
</Application.Resources

3) に追加DataContext="{StaticResource MainVM}"MainPage.xamlます。

アプリを起動すると、次の例外が発生します。

System.Windows.Markup.XamlParseException: Cannot create instance of type 'VMTest.TestVM' [Line: 11 Position: 29]
   at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
   at VMTest.App.InitializeComponent()
   at VMTest.App..ctor()

誰が何が起こっているかについて考えを持っていますか? 私が言ったように、私は WP7 でまったく同じことを行うことができ、うまく動作します。

4

1 に答える 1

7

明示的にパブリックとしてマークされていないオブジェクトのインスタンスをXAMLで作成することはできません。

于 2013-03-07T18:23:59.930 に答える