Wpf binding not updating ui
I wanted to take some time to go over bindings in WPF and how they can be used with classes to simplify and optimize your code.
At this moment, events do not work in Power Shell classes, so in order to do what I’m about to do, we need to create classes in C# and bring them over to Power Shell.
For this example, I’m going to make the window title bound to the property Window Title by setting Title=””.
There are countless example snippets of how to do this – some are rather extensive, but most are some variation on a standard boilerplate template.
These cannot be equal, but since case matters in C#, you can make the private variable be windowtitle, and the public variable be Window Title.
Window Title is also going to be a string, so I want to make it a string. This gets the value I’m sending it, and sets the property to the value. If I simply put in get and set, I’m going to update the variable, but will not tell the UI it was updated, so the UI won’t update!
In order to get around this, we can create a custom class, create a synchrnoized hashtable, and then put the class in the synchrnoized hash table. In plain English, you can really only use Power Shell classes to get information from the user, not display information to them after doing some work.
With this combination, we can now modify bound properties of the WPF UI in a separate thread without having to do magic in the UI thread! Because of this limitation, I only use C# classes, and I’m going to show you how to easily create a C# class!
I use my function New-Ephing WPFCode and use the –Create Class parameter when sending in XAML.