2012-12-01 5 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; 
    } 

난 그냥 닷넷 C#을 (XAML) 그래서 선택 변경 이벤트도 LostFocus 이벤트를 트리거되어 가정으로 시작입니다.

진짜 문제가 무엇인지 좀 도와주세요 Zauk

+0

SelectionChanged 이벤트 대신 OnHold 이벤트를 사용하고 Appbar 대신 Context Menu를 사용하십시오. 그게 도움이 될거야. – nkchandra

답변

1

는 다음과 같은 해킹을 사용할 수 있습니다 behind.Thanks. 변수를 초기화합니다. 예를 들어 xaml.cs.x에서 selectChanged를 False로 초기화합니다. SelectionChanged 함수에서 True로 변경하십시오. 이제 LostFocus 함수에서 처리 않는 selectChanged 변수는 거짓이며, 사실 세트는 다시 거짓

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

에 있다면 나는이 문제를 해결해야한다고 생각하는 경우에만.