使用相同的WPF窗口用于两个不同的目的

时间:2017-07-13 00:02:10

标签: wpf vb.net

我有一个用VB编写的WPF应用程序,有几个窗口。这些窗口中有几个控件供用户输入数据。然后将该数据保存到数据库中。我希望用户能够编辑给定的数据集,并且使用输入数据的同一窗口会更方便。取决于用户是否单击"添加"或"编辑",我想在窗口后面运行不同的代码。

我的问题是,我无法弄清楚如何区分这两个事件。 MainWindow类有按钮" Add"和"编辑"。单击时,它们会创建一个新选项卡,其中包含" Data.xaml"的新实例。 " Data.xaml"有" Data.vb"在它背后。怎么能" Data.vb"告诉它是否应该执行"编辑"或"添加"码?

1 个答案:

答案 0 :(得分:0)

简单的解决方案是向Data类添加一些属性,告诉我们应该做什么:

Public Partial Class Data Inherits Window
    // ...

    Public Property Mode As Mode

    // ...
End Class

其中Mode是包含两个字段的枚举:AddEdit

Add按钮设置ModeMode.Add的点击处理程序中,在Edit按钮设置ModeMode.Edit的点击处理程序中。

如果你想在窗口构造之后阻止更改Mode,你可以创建一个新的构造函数,它将模式作为参数:

Public Partial Class Data Inherits Window
    // ...

    Public Sub New(mode As Mode)
        Me.New()
        Mode = mode
    End Sub

    Public ReadOnly Property Mode As Mode

    // ...
End Class

然后在Data.vb的逻辑中查看Mode并执行适当的操作。

Private Sub AddButton_Click(sender As Object, e As RoutedEventArgs)
    Dim dataWindow = New Data(Mode.Add)
    dataWindow.ShowDialog()
End Sub

Private Sub EditButton_Click(sender As Object, e As RoutedEventArgs)
    Dim dataWindow = New Data(Mode.Edit)
    dataWindow.ShowDialog()
End Sub