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
答案 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;
}
我认为这可以解决你的问题。