0

ページ、ボタン、チェック ボックス、ラジオ ボタンなどのさまざまなコントロールのインスタンスとスライダーを持つ Windows Phone 8.1 Silverlight アプリケーションを使用しています。

各コントロールには、次のように追加されたイベント ハンドラーがあります。この例はスライダーに固有のものですが、他のコントロールは、コントロールの種類と実際に処理されるイベントを置き換えるだけです。

static void instrumentSlider(Slider slider)
{
    Logger.Logger.LogMessage("instrumentSlider() - Called for: [" + slider + "]");

    slider.ManipulationCompleted -= new EventHandler<ManipulationCompletedEventArgs>(slider_ManipulationCompleted);
    slider.ManipulationCompleted += new EventHandler<ManipulationCompletedEventArgs>(slider_ManipulationCompleted);
}

static void slider_ManipulationCompleted(object sender, ManipulationCompletedEventArgse)
{
    try
    {
        Logger.Logger.LogMessage("slider_ManipulationCompleted() - Called for: [" + sender + "]");

        if (sender is Slider)
        {
            Slider slider = (Slider)sender;
            // Do stuff...
        }
    }
    catch (Exception ex)
    {
        Logger.Logger.LogException(ex);
    }
}

Visual Studio 2013 を使用してアプリを電話にダウンロードできます。すべてが期待どおりに機能し、ボタンを押したりスライダーを動かしたりすると、期待どおりのログ メッセージが表示されます。

ある時点で、誤って電話のカメラ ボタンを押してしまい、アプリが非アクティブになり、カメラ アプリがアクティブになりました。アプリに戻りましたが、スライダーを除くすべてのコントロールがイベントを生成し続けています!

ここで何が欠けていますか?スライダー、操作の完了、フォーカスの喪失、値の変更についていくつかのイベントを試しましたが、アプリが再アクティブ化された後、それらはすべて配信されなくなりましたが、他のすべてのコントロールからのイベントは引き続き配信されています。

コントロールを定義する XAML フラグメントを含めるように更新されました。

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <Slider Height="84" HorizontalAlignment="Left" Margin="37,243,0,0" Name="slider1" VerticalAlignment="Top" Width="383" />
        <Button Content="Button" Height="72" HorizontalAlignment="Left" Margin="27,18,0,0" Name="button1" VerticalAlignment="Top" Width="160" Click="button1_Click" RenderTransformOrigin="0.531,-0.222" />
        <CheckBox Content="CheckBox" Height="72" HorizontalAlignment="Left" Margin="241,17,0,0" Name="checkBox1" VerticalAlignment="Top" RenderTransformOrigin="0.509,0.181" />
        <HyperlinkButton Content="HyperlinkButton" Height="30" HorizontalAlignment="Left" Margin="27,110,0,0" Name="hyperlinkButton1" VerticalAlignment="Top" Width="200" />
        <ListBox Height="103" HorizontalAlignment="Left" Margin="37,342,0,0" Name="listBox1" VerticalAlignment="Top" Width="383" RenderTransformOrigin="0.499,1.408">
            <ListBoxItem Content="ListItem1" />
            <ListBoxItem Content="ListItem2" />
            <ListBoxItem Content="ListItem3" />
        </ListBox>
        <RadioButton Content="RadioButton" Height="72" HorizontalAlignment="Left" Margin="241,73,0,0" Name="radioButton1" VerticalAlignment="Top" IsChecked="True" />
        <RadioButton Content="RadioButton" Height="72" HorizontalAlignment="Left" Margin="241,126,0,0" Name="radioButton2" VerticalAlignment="Top" RenderTransformOrigin="0.528,0.056" />
        <RadioButton Content="RadioButton" Height="72" HorizontalAlignment="Left" Margin="241,171,0,0" x:Name="radioButton3" VerticalAlignment="Top" RenderTransformOrigin="0.503,1.837" />
        <TextBox Height="72" HorizontalAlignment="Left" Margin="37,445,0,0" Name="textBox1" Text="TextBox" VerticalAlignment="Top" Width="383" />
    </Grid>
4

0 に答える 0