2011-09-01 90 views
1

我在窗口中有一个UI,它绑定到一个XML文件。每当我手动去更改我的XML文件时,我需要更新UI。XML更改时更新UI

以下是WAML文件:

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <XmlDataProvider x:Key="dataSource" Source="Data/Media.xml"> 
     </XmlDataProvider> 
    </Window.Resources> 
    <Grid> 
     <ListBox Name="listBox1" DataContext="{Binding Source={StaticResource dataSource}, XPath=/Media/Book/@Title, Mode=OneWay}" /> 
    </Grid> 
</Window> 

下面是XML文件:

<?xml version="1.0" encoding="utf-8" ?> 
<Media> 
    <Book Author='John' Title='Fish are my aaaa friends' /> 
    <Book Author='Dave' Title='Fish are my enemies' /> 
    <Book Author='Jane' Title='Fish are my food' /> 
</Media> 

我在服务层的窗口对象。为了初始化它,我做了以下操作:

winobj.DataContext = node.OuterXml; winobj.Show();其中node是我从服务器获得的XML字符串。如果我要求您更新此winobj或重置其datacontext以更新UI,您将如何执行此操作?

我的用户界面以如下方式绑定。

<Window.Resources> 
    <XmlDataProvider x:Key="Data" XPath="//WindowUpdate" /> 
</Window.Resources> 
<Label Content="{Binding Source={StaticResource Data}, 
     XPath=Window/Children/Label[@id\=\'lblInterval\']/@text}" ... 
+1

这是一些创造性的样本数据。你当时在想什么? –

+0

Hey Kieren ...))....这个数据来自本书的必备wpf,数据绑定篇.....请大家帮忙!!!! – Kunal

回答

0

你可以使用一个FileSystemWatcher赶上更改文件,你如何更改数据是由你(例如暴露bindable属性和更改)。

+0

嘿H.B ....谢谢你的回复。但我最终希望实现类似于显示不断变化的股票价格和更新UI的财务应用程序。我有一个后台线程,它执行异步读取并且具有对窗口对象的引用。线程正在读取数据,但我无法更新UI。如果可能的话,请在这方面提供帮助。 – Kunal

+0

@Kunal:你为什么不能更新UI?你是怎么做到的?怎么没用?你期望什么?请提供更多信息来解决这个问题。 –

+0

Hey H.B. ...我有一个窗口对象与我在服务层,初始化它,我做了以下: - winobj.DataContext = node.OuterXml; winobj.Show(); – Kunal