J'ai une application WPF avec un formulaire qui a une zone de texte nommée "txtStatusWindow". J'ai également une classe vb.net qui m'a été remise par un collègue qui doit être appelée et exécutée par le code dans mon application code-behind. Mon collègue insiste sur le fait que j'aurai besoin d'utiliser les événements .net courants pour mettre à jour la zone de texte sur mon formulaire.WPF et VB.net: liaison de données pour séparer la classe créée en dehors du mélange d'expression
La classe vb.net séparée:
Public Class globalclass
Public Event txtStatusWindow(ByVal Text As String)
Public Sub InitializeProgram()
RaiseEvent txtStatusWindow("Updating something.")
System.Threading.Thread.Sleep(2000)
RaiseEvent txtStatusWindow("Updating something else.")
System.Threading.Thread.Sleep(2000)
RaiseEvent txtStatusWindow("Updating something other than else.")
System.Threading.Thread.Sleep(2000)
RaiseEvent txtStatusWindow("Updating something other than the else stuff.")
System.Threading.Thread.Sleep(2000)
End Sub
End Class
Je dois être en mesure d'appeler le sous « InitializeProgram() » de mon code-behind, et il doit être en mesure de mettre à jour « txtStatusWindow.text "comme il fonctionne. Je lui ai dit que la mise à jour de la zone de texte peut être faite avec la liaison de données, mais je ne sais pas comment intégrer une classe séparée comme ça dans mon projet, comment appeler des méthodes, ou comment provoque la mise à jour de mes blocs de texte via la liaison de données. J'ai également suggéré que les méthodes de cette classe ne sont pas optimales pour se connecter au projet WPF de toute façon, mais il l'a juste écrit comme un exemple pour découvrir comment connecter les deux projets. Par la suite, j'aurai besoin d'intégrer des classes comme celles-ci qui exécuteront des threads séparés pour mettre à jour leurs données à partir d'une source dynamique et provoquer la mise à jour de nombreux contrôles dans mon application.
Jusqu'à présent, la seule façon que nous avons pu obtenir ce travail à partir du code-behind mon est ceci:
Partial Public Class SplashScreen
Dim NewText as String
Public WithEvents Globals As globalclass = New globalclass
Public Delegate Sub StringDelegate(ByVal Text As String)
Public SplashText As String
Public Sub New()
MyBase.New()
Me.InitializeComponent()
Me.Show()
Globals.InitializeProgram()
End Sub
Public Sub UpdateSplashscreenHandler(ByVal Text As String) Handles Globals.UpdateSplashScreen
StatusWindowText.Text = Text
End Sub
Malgré le fait que l'écran WPF « fige » jusqu'à ce que le « globalclass InitializeProgram » method completes (txtStatusWindow.Text ne se met pas à jour pendant que sub sans utiliser l'extension "refresh" ésotérique ...), je crois sincèrement que nous allons dans ce sens.
Il y a quelques exemples précieux concernant l'intégration et la liaison aux objets dans le code existant. Merci d'avoir examiné notre petit problème.
Voulez-vous dire qu'il n'y a pas de XAML impliqué et que vous créez toute l'interface utilisateur directement à partir de VB? – MojoFilter