XML更改时更新UI

时间:2011-09-01 15:33:48

标签: wpf multithreading user-interface

我在一个窗口中有一个UI,它绑定到一个XML文件。每当我手动去更改我的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 :(得分:0)

您可以使用FileSystemWatcher来捕获对文件的更改,更改数据的方式取决于您(例如公开bindable属性并更改)。