Can I delay binding of a ui element if the element is not currently visible. Sometimes I have a form that has some hidden/minimised elements, I would like to not update them if they are not on the screen. I suspect the answer is no, but it never hurts to ask?
相关问题
- VNC control for WPF application
- How do I bind a DataGridViewComboBoxColumn to a pr
- WPF Binding from System.Windows.SystemParameters.P
- XAML: Applying styles to nested controls
- How can I add a horizontal line (“goal line”) for
For a workaround I have a binding to the visibility of the object, when the object is set to visible, the property triggers the construction of the element behind it which have a binding via a
ContentPresenter
.There is no built in way to do this - but you can write it yourself.
The trick is to wrap binding in your own markup extension that uses the original binding but adds new behavior around it (for example, by setting UpdateSourceTrigger to Explicit when you don't want the binding to work.
Here's an example (that delays the binding's data transfer):
http://www.paulstovell.com/wpf-delaybinding
Now, there are a lot of possible edge conditions with disabling bindings for invisible controls, especially around showing and hiding controls, so I wouldn't write a generic extension for this - but maybe in your specific application this can be useful.
The answer is no because the binding might be cause of making an element visible again. So if binding did not work on hidden controls it would not allow the binding to make it visible again.
I know this is an old question, but as I failed to find an implemented class or something, I did it myself, following @Nir answer.
This is a Markup Extension that wraps normal binding to only really bind when the object
IsVisible
property becomes true for the first time:To use:
In this example, it will only bind when the ItemsControl
IsVisible
becomes true for the first time.It will not unbind when the
IsVisible
gets false again, but I think someone can change it as needed.Improved MarkupExtension that wraps normal Binding to auto bind/unbind data model if visible changed.
See previous version here.
To use: