1

NET C#,在我的 windows phone 7.5 应用程序中,如果选择了任何项目,我想让应用程序栏可见..所以我让它在选定的更改事件中可见。但是,在我的代码中发生了什么是选择更改它也会触发失去的福克事件,并且在那个事件中我正在制作所选索引= 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

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 回答