C# 类型为'的首次机会例外;System.Windows.Markup.XamlParseException';发生在System.Windows.ni.dll中

C# 类型为'的首次机会例外;System.Windows.Markup.XamlParseException';发生在System.Windows.ni.dll中,c#,windows-phone-8,C#,Windows Phone 8,C#代码如下 public partial class zoom1: PhoneApplicationPage { // Constructor public zoom1() { InitializeComponent(); //the erroe is shown here } private async void SetBackground1(object sender, RoutedEventArgs e) {

C#代码如下

public partial class zoom1: PhoneApplicationPage
{
    // Constructor
    public zoom1()
    {
        InitializeComponent(); //the erroe is shown here
    }

    private async void SetBackground1(object sender, RoutedEventArgs e)
    {
        if (await LockScreenManager.RequestAccessAsync() == LockScreenRequestResult.Granted)
        {
            var uri = new Uri("ms-appx:///Assets/LockScreens/People/1.jpg", UriKind.Absolute);
            LockScreen.SetImageUri(uri);
            MessageBox.Show("Your new lockscreen background has been set.");
        }
        else
        {
            MessageBox.Show("You said no, so I can't update your background.");
        }
    }
}
<phone:PhoneApplicationPage.ApplicationBar>
    <shell:ApplicationBar IsVisible="True" Opacity="0.5" IsMenuEnabled="True">
        <shell:ApplicationBarIconButton IconUri="Assets/Buttons/Check.png" Text="Set" Click="SetBackground1"/>
    </shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>
该错误是在我将click=”“添加到AppBarButton后生成的。 XAML代码如下

public partial class zoom1: PhoneApplicationPage
{
    // Constructor
    public zoom1()
    {
        InitializeComponent(); //the erroe is shown here
    }

    private async void SetBackground1(object sender, RoutedEventArgs e)
    {
        if (await LockScreenManager.RequestAccessAsync() == LockScreenRequestResult.Granted)
        {
            var uri = new Uri("ms-appx:///Assets/LockScreens/People/1.jpg", UriKind.Absolute);
            LockScreen.SetImageUri(uri);
            MessageBox.Show("Your new lockscreen background has been set.");
        }
        else
        {
            MessageBox.Show("You said no, so I can't update your background.");
        }
    }
}
<phone:PhoneApplicationPage.ApplicationBar>
    <shell:ApplicationBar IsVisible="True" Opacity="0.5" IsMenuEnabled="True">
        <shell:ApplicationBarIconButton IconUri="Assets/Buttons/Check.png" Text="Set" Click="SetBackground1"/>
    </shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>


您是否在没有异步的情况下尝试过它?另外,中的示例使用了
EventArgs
而不是
RoutedEventArgs
,但我不确定这是否会导致您看到的异常。

您能告诉我们错误发生在哪一行吗?错误似乎与显示的代码不匹配。现在我添加了C#和XAML代码。当我删除Click=”“时,则不会显示此类型的异常。但是我的AppBarButton不起作用。我必须进行测试才能确定,但我认为它不喜欢你的
SetBackground1
方法上的异步签名。我创建了一个新项目,用相同的代码进行测试,但这次没有显示异常。我想在我的主项目中删除此异常。请添加调用stackLockScreenManager。RequestAccessAsync()在没有Async的情况下无法工作。请首先找出异常的原因,我认为问题在于SetBackground1方法。当我从MainPage.xaml导航到Zoom1.xaml时,由于这个异常,导航失败。如果我从Zoom1.xaml中删除Click=“”,导航将成功完成。