在执行UserControlCheckbox_Checked之前执行Listbox_SelectionIndex或Listbox_Tap

时间:2014-09-24 06:36:35

标签: c# windows-phone-8 listbox

我在页面中实施了列表框。它使用我的用户控件作为其项目。我的用户控件包括文本框,图片和复选框。

案例1: 当我点击列表框项目中的图片时,它会转到 Listbox_SelectionIndex(),然后转到 UserControlImage_Tap(),然后转到 Listbox_Tap()。它从主页中的Listbox_SelectionIndex()中获取selectionindex,在此selectionindex上,它在usercontrol代码中的UserControlImage_Tap()方法中工作,然后返回到主页中的Listbox_Tap()。

案例2: 现在,如果选中/取消选中该复选框,它将直接从usercontrol代码执行 UserControlCheckbox_Checked()方法。它首先从主页跳过执行 Listbox_SelectionIndex()。这意味着我无法将selectionindex发送到 UserControlCheckbox_Checked()

如何实现这一目标?


我尝试在XAML中为usercontrol中的复选框设置IsHitTestVisible =“False”。它工作,现在ListBox_SelectionChanged()首先执行,但再次没有用,因为在我的ListBox_SelectionChanged()中我导航到另一个页面。所以当我选中复选框时,在检查/取消选中之前,用户正在进行导航。

  public void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ListBoxHindi.SelectedIndex != -1)
            {
           NavigationIndexHindi=ListBoxHindi.SelectedIndex;
                singletonInstance.HindiTouchedIndex = NavigationIndexHindi;
                NavigationService.Navigate(new Uri(singletonInstance.GotoContentDisplayPage + "?language=" + LanguageType + "&bookToOpenIndex=" + NavigationIndexHindi, UriKind.Relative));
                        ListBoxHindi.SelectedIndex = -1;
            }
        }



    public void ListBox_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {

        if (ListBoxHindi.SelectedIndex != -1)
        {
            singletonInstance.HindiTouchedIndex = ListBoxHindi.SelectedIndex; 
            ListBoxHindi.SelectedIndex = -1;
        }

    }

1 个答案:

答案 0 :(得分:0)

尝试添加Try / Catch或If语句 - 如果选中该复选框,则执行并继续... Else只需继续...