选择更改事件也称为Lostfocus事件?

时间:2012-12-01 11:03:11

标签: windows-phone-7 c#-4.0 listbox

NET C#, 在我的Windows Phone 7.5应用程序中,如果任何项目已选中,我想让应用程序栏可见。所以我在选定的更改事件中显示它。但是我的代码中发生的事情是,当选择更改时它也会触发LostFocus事件,在那种情况下我将选择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;
    }

我刚刚开始使用.NET C#(XAML),因此假设选择更改事件也触发了LostFocus事件。

请帮助我背后的真正问题。谢谢 Zauk

1 个答案:

答案 0 :(得分: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;
}

我认为这可以解决你的问题。