2011-09-01 132 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