how to change xmldataprovider source in wpf at runtime?

c#, wpf, xmldataprovider

Solution

You can get the `XmlDataProvider` instance by writing `(XmlDataProvider)this.Resources["organization"]` in the code file.

You can then set the `Source` property to a path from a file dialog.

For example:

var provider = (XmlDataProvider)this.Resources["organization"];
var dialog = new OpenFileDialog();
dialog.Filter = "XML Files|*.xml";
if (dialog.ShowDialog(this)) {
    provider.Source = new Uri(dialog.FileName, UriKind.Absolute);

Problem

I made an application which draws a tree of organization based on values from an xml file. The xaml file goes like this : ``` <Window.Resources> <!-- The Org Chart Data--> <XmlDataProvider x:Key="organization" Source="model.xml" /> <SolidColorBrush x:Key="ListBorder" Color="#FF7F9DB9"/> <!-- The Style for Nodes --> <Style TargetType="{x:Type draw:Node}"> <Setter Property="OverridesDefaultStyle" Value="true"/> <Setter Property="Template"> --------------------------------------------------------- ``` I want to be able to change the source at runtime by selecting a xml file from openfiledialog (like button click) how do i do that?

Original source