2010-01-10 5 views
3

J'ai fait une application qui dessine un arbre d'organisation basé sur les valeurs d'un fichier xml.comment changer la source xmldataprovider dans wpf lors de l'exécution?

Le fichier XAML va comme ceci:

<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"> 
     --------------------------------------------------------- 

Je veux être en mesure de changer la source lors de l'exécution en sélectionnant un fichier XML à partir OpenFileDialog (comme le bouton) Comment puis-je faire cela?

Répondre

6

Vous pouvez obtenir l'instance XmlDataProvider en écrivant (XmlDataProvider)this.Resources["organization"] dans le fichier de code.

Vous pouvez ensuite définir la propriété Source sur un chemin à partir d'une boîte de dialogue de fichier.

Par exemple:

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); 
Questions connexes