首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XmlDataProvider刷新源WPF

XmlDataProvider刷新源WPF
EN

Stack Overflow用户
提问于 2009-10-27 17:07:00
回答 1查看 2.5K关注 0票数 2

我有一个WPF网格

代码语言:javascript
复制
<Window x:Class="LabsRSS.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Poperecinii Timur Lab" Height="404" Width="588">
<Grid x:Name="blah">
    <Grid.Resources>
        <XmlDataProvider x:Key="flickrdata" Source="http://api.flickr.com/services/feeds/photos_public.gne?tags=dog&amp;lang=en-us&amp;format=rss_200">
            <XmlDataProvider.XmlNamespaceManager>
                <XmlNamespaceMappingCollection>
                    <XmlNamespaceMapping Prefix="media" Uri="http://search.yahoo.com/mrss/"/>
                </XmlNamespaceMappingCollection>
            </XmlDataProvider.XmlNamespaceManager>
        </XmlDataProvider>
        <DataTemplate x:Key="itemTemplate">
            <Image Width="75" Height="75" Source="{Binding Mode=OneWay, XPath=media:thumbnail/@url}"/>
        </DataTemplate>
        <ControlTemplate x:Key="controlTemplate" TargetType="{x:Type ItemsControl}">
            <WrapPanel IsItemsHost="True" Orientation="Horizontal"/>
        </ControlTemplate>
    </Grid.Resources>
    <ItemsControl
   Width="375"
   ItemsSource="{Binding Mode=Default, Source={StaticResource flickrdata}, XPath=/rss/channel/item}"
   ItemTemplate="{StaticResource itemTemplate}"
   Template="{StaticResource controlTemplate}">
    </ItemsControl>
    <TextBox Height="23" Margin="193,0,213,24" Name="textBox1" VerticalAlignment="Bottom" TextChanged="textBox1_TextChanged" />
</Grid>

我想要做的是用来自TextBox的自己的输入替换标记。

代码语言:javascript
复制
 private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
    {
        XmlDataProvider dataProvider = (XmlDataProvider)this.blah.FindResource("flickrdata");
        XmlNamespaceManager xnManager = dataProvider.XmlNamespaceManager;
        string newSource = "http://api.flickr.com/services/feeds/photos_public.gne?tags=flower&amp;lang=en-us&amp;format=rss_200";
        newSource = Regex.Replace(newSource, "(^.*tags=)(.+?)(&amp;.*$)", String.Format("{0}{1}{2}", "$1", textBox1.Text, "$3"));
        dataProvider.Source = new Uri(newSource);
        dataProvider.XmlNamespaceManager = xnManager;
        dataProvider.Refresh();

    }

现在uri似乎设置得很好,但是dataProvider并没有刷新内容,我怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2009-10-27 17:35:11

我真的不认为你想打电话给瑞瑞什..。或者为此重新设置XmlNamespaceManger。我认为对Refresh的调用实际上是告诉XmlDataProvider重新加载它已经拥有的相同的源。

当您更改源时,这应该是触发加载逻辑所需的全部内容。如果您确实希望重新设置XmlNamespaceManager,则应该调用DeferRefresh,否则提供程序将在每个属性更改上重新加载。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1632283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档