1

NET C#、Windows Phone 7.5アプリケーションで、項目が選択されている場合はアプリケーションバーを表示したいので、選択した変更イベントで表示します。しかし、私のコードで起こっていることは、選択を変更するとLostFocusイベントもトリガーされ、そのイベントで選択されたインデックスを0にすることです。コードの結果は、アイテムを選択すると、アプリケーションバーが表示され、自動的に非表示になります。 (フォーカスが失われたため)。以下はコードの一部です。

 private void ShopingListItemDetails_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (ShopingListItemDetails.SelectedIndex != -1)
        {
            ApplicationBar.IsVisible = true;
            int selind = ShopingListItemDetails.SelectedIndex;
        }
    }

    private void ShopingListItemDetails_LostFocus(object sender, RoutedEventArgs e)
    {

        ApplicationBar.IsVisible = false;
        ShopingListItemDetails.SelectedIndex = -1;
    }

私は.NETC#(XAML)を使い始めたばかりなので、選択変更イベントがLostFocusイベントもトリガーしていると仮定します。

背後にある本当の問題は何か私を助けてください。ありがとうZauk

4

1 に答える 1

1

次のハックを使用できます。変数を初期化します。たとえば、xaml.cs で最初に selectChanged を False に設定します。SelectionChanged 関数で、それを True に変更します。ここで、LostFocus 関数では、selectChanged 変数が false の場合にのみ処理を行い、true の場合は False に戻します。

Boolean selectChanged=false;
private void ShopingListItemDetails_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (ShopingListItemDetails.SelectedIndex != -1)
    {
        ApplicationBar.IsVisible = true;
        int selind = ShopingListItemDetails.SelectedIndex;
        selectChanged=true;
    }
}

private void ShopingListItemDetails_LostFocus(object sender, RoutedEventArgs e)
{
    if(!selectChanged) 
    {
        ApplicationBar.IsVisible = false;
        ShopingListItemDetails.SelectedIndex = -1;
    }
    selectChanged=false;
}

これで問題は解決すると思います。

于 2012-12-02T18:51:33.657 に答える