14 Apr 2017
The Pragmatic PasswordBox
In WPF the
PasswordBox control does not expose the password it contains through data binding. It is a security feature designed to protect the sensitive data the box contains. It is however quite a faff and has sparked much debate.
Recently I’ve been experimenting with ReactiveUI. ReactiveUI brings together the elegance and power of Reactive Extensions (RX) and MVVM to provide a clean, simple, and reactive way to build interfaces. One of the key tenets of ReactiveUI is that it’s not actually bad to put logic in code-behind. With that in mind the power of Rx provides an elegant way to bind the contents of a
PasswordBox to the view model.
I think this is a pretty elegant solution to the whole problem. ReactiveUI calls these hack bindings, and they are, but sometimes as a developer you have to break out a little pragmatism.
I have also found this technique useful to bind the
SelectedItems property of a
ListView control back to the view model. Use it sparingly though. It’s difficult to test and debug these bindings.