Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
出于两个不同的目的使用相同的WPF窗口_Wpf_Vb.net - Fatal编程技术网

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

出于两个不同的目的使用相同的WPF窗口,wpf,vb.net,Wpf,Vb.net,我有一个用VB编写的WPF应用程序,有几个窗口。这些窗口中有几个控件供用户输入数据。然后将这些数据保存到数据库中。我希望用户能够编辑给定的一组数据,使用输入数据的同一窗口会方便得多。根据用户是单击“添加”还是“编辑”,我希望在窗口后面运行不同的代码 我的问题是我不知道如何区分这两个事件。主窗口类有“添加”和“编辑”按钮。单击时,它们会创建一个新选项卡,其中包含“Data.xaml”的新实例。“Data.xaml”后面有“Data.vb”。“Data.vb”如何判断它应该执行“编辑”还是“添加”代

我有一个用VB编写的WPF应用程序,有几个窗口。这些窗口中有几个控件供用户输入数据。然后将这些数据保存到数据库中。我希望用户能够编辑给定的一组数据,使用输入数据的同一窗口会方便得多。根据用户是单击“添加”还是“编辑”,我希望在窗口后面运行不同的代码


我的问题是我不知道如何区分这两个事件。主窗口类有“添加”和“编辑”按钮。单击时,它们会创建一个新选项卡,其中包含“Data.xaml”的新实例。“Data.xaml”后面有“Data.vb”。“Data.vb”如何判断它应该执行“编辑”还是“添加”代码?

简单的解决方案是向
Data
类添加一些属性,这些属性将告诉我们应该执行什么操作:

Public Partial Class Data Inherits Window
    // ...

    Public Property Mode As Mode

    // ...
End Class
其中,
模式
是带有两个字段的枚举:
添加
编辑

添加的单击处理程序中,将
按钮设置为
模式。添加
,在
编辑的单击处理程序中,将
按钮设置为
模式。编辑

如果要防止在构建窗口后更改
模式
,可以创建将模式作为参数的新构造函数:

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中的逻辑中查看
模式
,并执行适当的操作

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

仅供参考的问题是VB,所以相应地翻译代码可能会很好。@Craig谢谢。我没有注意到
vb.net
tag。我应该更清楚一点-
Data
是一个包含在框架中的类,而框架又包含在tabitem中。我的问题是通过帧传递信息。。。