1

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

我创建了一些影响自定义控件中某些 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 将始终为空。在所有这些视图中,自定义控件在 XAML 中被引用,如下所示:

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

有没有遇到过这个问题的人知道如何解决它?谢谢!

4

0 回答 0