1

基本的に画面下部のボタン パネルであるカスタム コントロールを実装しました。アプリケーションにはいくつかのビューがあり、そのほとんどがこのカスタム コントロールを参照します。

カスタム コントロールのいくつかの UIElements の表示プロパティに影響を与えるいくつかのメソッドを作成しましたが、すべての UIElements が null になるため、既定のビューから移動した後にこれらのメソッドが機能しなくなります。なぜこれが起こるのか、この問題を防ぐために何ができるのかを誰かが説明できますか? これが 1 つのビューでしか使用できない場合、私のすべての作業は無駄になります。使用するコードを次に示します。

私のカスタムコントロール:

<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" />

この問題を回避する方法を知っている人はいますか? ありがとう!

4

0 に答える 0