Windows phone 7 选择更改事件也称为Lostfocus事件?

Windows phone 7 选择更改事件也称为Lostfocus事件?,windows-phone-7,c#-4.0,listbox,Windows Phone 7,C# 4.0,Listbox,净C#, 在我的windows phone 7.5应用程序中,如果选择了任何项目,我希望使应用程序栏可见。。因此,我将使其在选定的更改事件中可见。但在我的代码中发生的是,当选择发生更改时,它也会触发LostFocus事件,在该事件中,我将使selected index=0。 现在代码的结果是,每当我选择任何项目时,应用程序栏都会变为可见,然后自动变为不可见(因为失去焦点事件)。 下面是一段代码 private void ShopingListItemDetails_SelectionChang

净C#, 在我的windows phone 7.5应用程序中,如果选择了任何项目,我希望使应用程序栏可见。。因此,我将使其在选定的更改事件中可见。但在我的代码中发生的是,当选择发生更改时,它也会触发LostFocus事件,在该事件中,我将使selected index=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

您可以使用以下黑客。初始化一个变量,比如在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;
}

我认为这应该可以解决您的问题。

您可以使用以下方法。初始化一个变量,比如在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;
}

我认为这应该可以解决您的问题。

尝试使用OnHold事件而不是SelectionChanged事件,并使用上下文菜单而不是Appbar。这可能会有所帮助。请尝试使用OnHold事件而不是SelectionChanged事件,并使用关联菜单而不是Appbar。这可能会有帮助。