导航后NPE与WP7 .NET Silverlight自定义控件

时间:2012-08-01 13:42:59

标签: .net windows-phone-7 silverlight-4.0

我已经实现了一个自定义控件,它基本上是屏幕底部的按钮面板。我们的应用程序有几个视图,其中大多数将引用此自定义控件。

我创建了一些影响自定义控件中某些UIElements的显示属性的方法,但是这些方法在导航离开默认视图后停止工作,因为所有UIElements都变为null。有人可以解释为什么会发生这种情况以及我可以做些什么来防止这个问题如果只能在一个视图中使用,我的所有工作都将一无所获!以下是一些有用的代码:

我的自定义控件:

<ControlTemplate TargetType="local:ControlBar">
  <Grid x:Name="ControlPanel" Margin="0" Background="{StaticResource PhoneChromeBrush}" Height="70" VerticalAlignment="Bottom" Grid.Row="1">
    <Canvas x:Name="ControlPanelButtonStack">
      <Button x:Name="GoButton" HorizontalAlignment="Left" Width="70" Canvas.Left="6" Canvas.Top="8" Visibility="Visible"/>
      <Button x:Name="StopButton" HorizontalAlignment="Left" Width="70" Canvas.Left="6" Canvas.Top="8" Visibility="Collapsed"/>
    </Canvas>
  </Grid>
</ControlTemplate>

造成麻烦的方法:

public void DisableGoButton()
{
   Button goButton = this.GetTemplateChild("GoButton") as Button;
   goButton.IsEnabled = false;
}

上面的方法将在MainPage.xaml中工作,但是一旦我们导航到另一个视图(称之为SettingsPage.xaml),它就会失败,因为goButton将始终为null。在所有这些视图中,自定义控件在XAML中引用,如:

<controlBar:ControlBar x:Name="ControlBar" Margin="0,698,0,0" Grid.Row="1" />

有没有人知道如何解决这个问题?谢谢!

0 个答案:

没有答案