我今天遇到了应用程序栏图标按钮的问题。尽管主页 XAML 中有有效的x:Name值,但尝试使用分配的名称引用按钮会导致 NullReferenceException。将 IDE 工具提示悬停在名称引用上会在检查时显示 NULL 值。
我在 SO 上找到了这篇文章,它给了我一个解决方法:
但是,我记得在另一个项目中我没有这个问题。在该项目中,名称引用确实具有有效值,并且我可以通过在主页 XAML 中设置的分配的x:Name值访问应用程序栏按钮。这两个项目都将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>