问题
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?
回答1:
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);
来源:https://stackoverflow.com/questions/2037906/how-to-change-xmldataprovider-source-in-wpf-at-runtime