2012-12-01 21 views
1

NET C#, 在我的Windows Phone 7.5應用程序中,我想讓應用程序欄可見,如果有任何項目已選擇。所以我讓它在選定的更改事件中可見。但是,我的代碼中發生的事情是,當選擇改變時它也會觸發LostFocus事件,並且在這種情況下,我正在使選擇的索引= 0. 現在,代碼的結果是當我選擇任何項目時,應用程序欄變得可見,然後自動看不見(因爲焦點事件丟失)。 以下是一段代碼。選擇更改事件也稱爲Lostfocus事件?

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; 
    } 

我只是在開始使用.NET C#(XAML),因此假設選擇更改事件也觸發LostFocus事件。

請幫我什麼是真正的問題behind.Thanks Zauk

+0

嘗試使用OnHold事件而不是使用SelectionChanged事件並使用上下文菜單代替Appbar。這可能有幫助。 – nkchandra

回答

1

您可以使用下面的技巧。最初在xaml.cs中初始化一個變量,比如說selectChanged爲False。在SelectionChanged函數中將其更改爲True。只有當selectChanged變量是現在,在引發LostFocus功能做加工假的,如果這是真的集回假

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; 
} 

我想這應該解決您的問題。