WFP - 打开新标签时的奇怪行为

时间:2013-08-03 18:13:03

标签: wpf

用户可以通过双击行或选择行并单击按钮来从DataGrid中进行选择。

使用第一种方法初始化新页面,但不会触发加载的事件。

使用第二种方法初始化新页面,旧页面将触发已卸载的事件,新的事件将触发已加载的事件,并打开新选项卡。

由于click和doubleclick事件都触发相同的sub我无法弄清楚为什么一个工作而另一个没有 - 当不在调试时,使用第一个方法形成新选项卡并且当单击加载的事件时然后被触发,但这不会在调试中显示。

Private Sub Reports_BalanceSheets_EditRecord(sender As Object, e As RoutedEventArgs)
    Try
        NewRecord = False
        Dim DGV As CustomControl.DGVx = Reports_BalanceSheets_Grid.FindName("Reports_BalanceSheets_DGV")
        If DGV.SelectedItems.Count = 1 Then
            Dim row As System.Data.DataRowView = DGV.SelectedItems(0)
            FormID = row("ID")
            Dim vName As String = row("Name")
            Dim vTab As CustomControl.STC_Tabx = Application.Current.MainWindow.FindName("Reports_BalanceSheetTab")
            Dim TabControl As CustomControl.STCx = Application.Current.MainWindow.FindName("AccountingReports_TabControl")
            Dim vImageSource As String = ReturnImageAsString("Profit_Loss.png", 16)
            If vTab Is Nothing Then
                Dim ReportsBalanceSheetFrame As New Frame

                Dim Tab As New CustomControl.STC_Tabx
                With Tab
                    .Name = "Reports_BalanceSheetTab"
                    .Header = " Edit " & vName & " "
                    .CloseButtonVisibility = DevComponents.WpfEditors.eTabCloseButtonVisibility.Visible
                    .TabToolTip = "Edit " & vName
                    .ImageSource = vImageSource
                    .Content = ReportsBalanceSheetFrame
                End With
                AddHandler Tab.Closing, AddressOf TabControl_TabClosing
                Dim vGrid As Grid = Application.Current.MainWindow.FindName("MainGrid_Website")
                RegisterControl(vGrid, Tab, Tab.Name.ToString)
                TabControl.Items.Add(Tab)


                Dim BalanceSheet As New Reports_BalanceSheet_Page
                ReportsBalanceSheetFrame.NavigationService.Navigate(BalanceSheet)
                TabControl.SelectedItem = Tab

            Else
                vTab.Close()
                Dim ReportsBalanceSheetFrame As New Frame
                Dim Tab As New CustomControl.STC_Tabx
                With Tab
                    .Name = "Reports_BalanceSheetTab"
                    .Header = " Edit " & vName & " "
                    .CloseButtonVisibility = DevComponents.WpfEditors.eTabCloseButtonVisibility.Visible
                    .TabToolTip = "Edit " & vName
                    .ImageSource = vImageSource
                    .Content = ReportsBalanceSheetFrame
                End With
                AddHandler Tab.Closing, AddressOf TabControl_TabClosing
                Dim vGrid As Grid = Application.Current.MainWindow.FindName("MainGrid_Website")
                RegisterControl(vGrid, Tab, Tab.Name.ToString)
                TabControl.Items.Add(Tab)

                Dim BalanceSheet As New Reports_BalanceSheet_Page
                ReportsBalanceSheetFrame.NavigationService.Navigate(BalanceSheet)
                TabControl.SelectedItem = Tab

            End If
        ElseIf DGV.SelectedItems.Count > 1 Then
            AppBoxValidation("You can only select one item at a time to edit!")
        Else
            AppBoxValidation("You must select an item to edit!")
        End If

    Catch ex As Exception
        EmailError(ex)
    End Try
End Sub

1 个答案:

答案 0 :(得分:1)

添加e.Handled解决了问题