Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I had a similar issue. I was binding to a TreeView and needed to call Refresh in response to the user canceling an edit operation. The <code>Refresh()</code> method obediently puts all the original values back, but this was not reflected in my TreeView UI. After consulting with the almighty Google, I came across this solution:</p> <pre><code>CollectionViewSource.GetDefaultView(treeViewClusters.ItemsSource).Refresh(); </code></pre> <p>This seems to force my TreeView to update everything. The only drawback (and it's a pretty major one) is that it seems to collapse all the tree nodes, which causes the user to lose their place. I could just as well set my <code>ItemsSource</code> to null and back again...same effect, although this method would be simpler if you had a bunch of bound text boxes or something, since you wouldn't need to rebind every single one.</p> <p>Is there a better solution than this?</p> <p><strong><em>EDITED: Yes there is...</em></strong></p> <p>A smarter-than-me coworker of mine came up with this solution, which seems to do the trick. In your partial class for the Linq2Sql object, add the following code:</p> <pre><code>public void SendPropertiesChanged() { foreach (System.Reflection.PropertyInfo prop in this.GetType().GetProperties()) SendPropertyChanged(prop.Name); } </code></pre> <p>The you can just call this in your application code:</p> <pre><code>context.Refresh(RefreshMode.OverwriteCurrentValues, employee); employee.SendPropertiesChanged(); </code></pre> <p>All UI elements get the message, and update themselves appropriately. This even works for treeview controls and things like that where you don't want the UI to appear to "reset" when you refresh the bindings.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload