none
如何使用后台代码改变Grid中DataContext绑定的XmlDataProvider RRS feed

  • 问题

  • <Window.Resources>

    <XmlDataProvider x:Key="menu" Source="config\UI.xml" XPath="/project"></XmlDataProvider>
            <DataTemplate x:Key="dataTemplate2">
                <TextBlock Text="{Binding XPath=@Name}" TextAlignment="Center"/>
            </DataTemplate>

            <DataTemplate x:Key="dataTemplate3">
                <TextBlock Text="{Binding XPath=@GdName}" TextAlignment="Center"/>
            </DataTemplate>

    </Window.Resources>

    <Grid Grid.Column="0"  DataContext="{Binding Source={StaticResource menu}}" Name="query">

     

     <ListBox Height="40"  Margin="10,0,0,0" Name="listBox1" ItemsSource="{Binding XPath=SubTab}" ItemTemplate="{StaticResource dataTemplate2}"  />


     <ListBox  DataContext="{Binding ElementName=listBox1, Path=SelectedItem}"  ItemTemplate="{StaticResource dataTemplate3}" ItemsPanel="{StaticResource menulist}" ItemsSource="{Binding XPath=Tab}"  Name="listBox3" />

    现在我想在程序运行时候当主界面的Combox发生SelectionChanged事件的时候如何将

    <XmlDataProvider x:Key="menu" Source="config\UI.xml" XPath="/project"></XmlDataProvider>中的Source属性值改变?

    2011年3月29日 8:37

答案

  • 你可以在load的时候设置你的Source属性,比如:

    Xaml:

    <XmlDataProvider x:Key="xmlFromFile" XPath="persons/person" />

    然后在Load的时候设置source:

    public Window1()

    {

        InitializeComponent();

     

        XmlDataProvider xml = FindResource("xmlFromFile") as XmlDataProvider;

        System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();

        xmldoc.Load("People.xml");

        xml.Source = new Uri(@"Data/People.xml",UriKind.RelativeOrAbsolute);

    }

     

    当SelectionChanged事件发生时,重新用上面的方法load。

    其他方法你还可以参考:

     

    http://social.msdn.microsoft.com/forums/en-us/wpf/thread/762F0BF4-6C1C-49C9-9418-BFB61521E0FD  (不仅被标记为答案的回复对这个问题有帮助,其他的回复也是很有用的,你可以看看)

    看那个MSFT的sample。


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 yooho 2011年3月30日 3:39
    2011年3月29日 9:52
    版主

全部回复

  • 你可以在load的时候设置你的Source属性,比如:

    Xaml:

    <XmlDataProvider x:Key="xmlFromFile" XPath="persons/person" />

    然后在Load的时候设置source:

    public Window1()

    {

        InitializeComponent();

     

        XmlDataProvider xml = FindResource("xmlFromFile") as XmlDataProvider;

        System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();

        xmldoc.Load("People.xml");

        xml.Source = new Uri(@"Data/People.xml",UriKind.RelativeOrAbsolute);

    }

     

    当SelectionChanged事件发生时,重新用上面的方法load。

    其他方法你还可以参考:

     

    http://social.msdn.microsoft.com/forums/en-us/wpf/thread/762F0BF4-6C1C-49C9-9418-BFB61521E0FD  (不仅被标记为答案的回复对这个问题有帮助,其他的回复也是很有用的,你可以看看)

    看那个MSFT的sample。


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 yooho 2011年3月30日 3:39
    2011年3月29日 9:52
    版主
  • 嗯,这个就是我需要的.谢谢~
    2011年3月30日 3:40