技术开发 频道

在WPF中使用Window和Page功能创建向导

  5. 添加一个Cancel和一个Finish的事件处理函数。OnCancelClick方法用来关闭窗口。OnFinishClick从额面上读出输入框里的内容,组成一个联系人对象,并将它传递给Page Function注册的返回句柄。

    ' Closes the window when cancel button is clicked
    Private Sub OnCancelClick(ByVal sender As Object, _
                                  
ByVal e As RoutedEventArgs)
        
CType((Me.Parent), NavigationWindow).Close()
    
End Sub

    
' Creates and populates a Contact object with page data. Then calls
    ' the OnReturn method to pass this object along to calling class
    Private Sub OnFinishClick(ByVal sender As Object, _
                              
ByVal e As RoutedEventArgs)
        
Dim cl As ContactList = _
                  
CType(Application.Current.Properties("ContactList"), _
                                                        ContactList)
        
Dim c As Contact = New Contact()
        c.FirstName
= Me.txtFirstName.Text
        c.LastName
= Me.txtLastName.Text
        c.EmailAddress
= Me.txtEmailAddress.Text
        
Try
            c.HomePage
= New Uri(Me.txtHomePage.Text)
        
Catch generatedExceptionVariable0 As UriFormatException
            c.HomePage
= Nothing
        
End Try
        OnReturn(
New ReturnEventArgs(Of Object)(c))

    
End Sub

  6. 下面我们为ContactDetailPage1这个功能页面创建返回事件处理函数。这就是调用页面。打开UILessPageFunction.xaml.cs这个代码文件,添加返回事件的处理函数。我们会在UILessPageFunction的OnLoaded方法里初始化一个ContactDetailPage1页面。同样的,将类型参数从默认值String改成Object。

Partial Public Class UILessPageFunction
    
Inherits PageFunction(Of Object)

    
Public Sub New()
        InitializeComponent()
    
End Sub

    
' The OnLoaded handler is run automatically when the class is loaded
    Private Sub OnLoaded(ByVal sender As Object, _
                        
ByVal e As RoutedEventArgs) Handles Me.Loaded
        
Dim pageFunction As ContactDetailPage1 = _
                            
New ContactDetailPage1(True, 0)
        
AddHandler pageFunction.Return, AddressOf pageFunction1_Return
        System.Windows.Navigation.NavigationService.GetNavigationService(
Me).Navigate(pageFunction)

    
End Sub

    
' This is the ContactDetailPage1 page function's return handler
    Sub pageFunction1_Return(ByVal sender As Object, _
            
ByVal e As System.Windows.Navigation.ReturnEventArgs(Of Object))
        
Dim cl As ContactList = _
              
CType(Application.Current.Properties("ContactList"), _
                                                     ContactList)
        
Dim c As Contact = e.Result
        cl.Add(c)

    
End Sub

End Class

 

  在UILessPageFunction.xaml页面里,注册OnLoaded事件处理函数:

<PageFunction
    
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys
="clr-namespace:System;assembly=mscorlib"
    x:Class
="UILessPageFunction"
    x:TypeArguments
="sys:Object"
    Loaded
="OnLoaded"
    Title
="UILessPageFunction">
    
<Grid>

    
</Grid>
</PageFunction>

 

  7. 在Read模式情况下,我们想要email地址和主页URL这两项显示成按钮。点击email地址这个按钮应该打开默认的email应用程序,点击主页URL的按钮应该在Frame_RightPane里显示主页的内容。我们创建两个URI,在按钮的事件处理函数里,只要简单地导航到这两个URI就可以了。我们在ContactDetailPage1.xaml.cs里修改代码:

    ' Navigates to home page Uri. This results in the WebOC displaying
    ' the web site in the right hand side frame
    Private Sub NavigateToHome(ByVal sender As Object, _
                              
ByVal e As RoutedEventArgs)
        
If (Not (Me.txtHomePage.Text Is Nothing)) AndAlso _
           (
Not (Me.txtHomePage.Text = "")) Then
            System.Windows.Navigation.NavigationService.GetNavigationService(
Me).Navigate(New Uri(Me.txtHomePage.Text))
        
End If
    
End Sub

    
' Navigates to email address as Uri. This results in the launching of
    ' the default mail client.
    Private Sub SendEmail(ByVal sender As Object, ByVal e As RoutedEventArgs)
        
If Not (Me.txtEmailAddress Is Nothing) Then
            System.Windows.Navigation.NavigationService.GetNavigationService(
Me).Navigate(New Uri("mailto:" + Me.txtEmailAddress.Text))
        
End If
    
End Sub

 

1
相关文章