c# - ApplicationBarIconButton 名称引用会导致 NullReferenceException,但并非在所有 Windows Phone 7 应用程序中?

标签 c# xaml windows-phone-7 nullreferenceexception

今天我遇到了应用程序栏图标按钮的问题。尽管主页 XAML 中具有有效的 x:Name 值,但尝试使用分配的 name 引用按钮会导致 NullReferenceException。将 IDE 工具提示悬停在名称引用上会在检查时显示 NULL 值。

我在 SO 上找到了这篇文章,它给了我一个解决方法:

WP7: NullReference Exception when referring to element

但是,我记得在我的另一个项目中没有这个问题。在该项目中,名称引用确实具有有效值,并且我能够通过在中设置的分配的x:Name值来访问应用程序栏按钮主页 XAML。这两个项目都以 Windows O/S 7.1 作为其平台,我看不出相关 XAML 或主页加载逻辑之间有任何不同之处,可以表明问题的根源。

有谁知道为什么在一个 Windows Phone 7 项目中发生这种情况,而在另一个项目中却没有?

不存在空引用问题的应用程序的主页 XAML

<phone:PhoneApplicationPage.ApplicationBar>
    <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True" x:Name="PhoneAppBar" Opacity="0.0">
        <shell:ApplicationBarIconButton IconUri="/Icons/appbar.feature.video.rest.png" Text="record"  x:Name="StartRecording" Click="StartRecording_Click" />
        <shell:ApplicationBarIconButton IconUri="/Icons/appbar.stop.rest.png" Text="stop" x:Name="StopPlaybackRecording" Click="StopPlaybackRecording_Click"/>
        <shell:ApplicationBarIconButton IconUri="/Icons/appbar.transport.play.rest.png" Text="play" x:Name="StartPlayback" Click="StartPlayback_Click"  />
        <shell:ApplicationBarIconButton IconUri="/Icons/appbar.transport.pause.rest.png" Text="linked" x:Name="PausePlayback" Click="PausePlayback_Click" IsEnabled="False"/>
    </shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>

存在问题的应用程序的主页 XAML

<phone:PhoneApplicationPage.ApplicationBar>
    <shell:ApplicationBar IsVisible="True" IsMenuEnabled="False">
        <shell:ApplicationBar.Buttons>
            <shell:ApplicationBarIconButton x:Name="btnRecord" Text="record" IconUri="/images/record.png" Click="Record_Click"/>
            <shell:ApplicationBarIconButton x:Name="btnPlay" Text="play" IconUri="/images/play.png" Click="Play_Click" IsEnabled="False"/>
            <shell:ApplicationBarIconButton x:Name="btnStop" Text="stop" IconUri="/images/stop.png" Click="Stop_Click"/>
        </shell:ApplicationBar.Buttons>
    </shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>

最佳答案

实际上,这是 AppBar 元素的一个已知问题。您必须通过 AppBar 本身的索引访问按钮。

var  button =  this.ApplicationBar.Buttons[0];

关于c# - ApplicationBarIconButton 名称引用会导致 NullReferenceException,但并非在所有 Windows Phone 7 应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19687530/

相关文章:

c# - 如何围绕异步方法编写包装器?

windows-phone-7 - wp7应用程序版本更改

c# - 在 gridview 中选择多个复选框

C# - 检查属性是否存在于枚举的元素上

c# - 图像控件绑定(bind)生成的Imageurl

windows-phone-7 - WP7 Bing map 图钉 - 如何调整自定义图钉的位置?

c# - 为什么我的 DateTime.Now.Millisecond 值始终为 "000"?

c# - 使用 SMO 复制数据库和数据

c# - 使用唯一 ID 以编程方式创建按钮

c# - Xamarin - 在 xmlns clr 命名空间中找不到类型