如何在运行时更改wpf中的xmldataprovider源?

are*_*ety 3 c# wpf xmldataprovider

我创建了一个应用程序,它根据xml文件中的值绘制组织树.

xaml文件是这样的:

<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">
        ---------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我希望能够通过从openfiledialog中选择一个xml文件(如按钮点击)在运行时更改源代码,我该怎么做?

SLa*_*aks 6

您可以XmlDataProvider通过写入(XmlDataProvider)this.Resources["organization"]代码文件来获取实例.

然后,您可以将该Source属性设置为文件对话框中的路径.

例如:

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);
Run Code Online (Sandbox Code Playgroud)