基本上我有一个WPF应用程序,它将在列表框中向用户显示公告。填充列表框的信息来自XML文件,其中包含有关不同公告的详细信息。然后我应用数据模板来显示相关的信息。我所拥有的是应用程序底部的两个按钮,我想要的是当用户单击未读通知按钮时,数据将被过滤以仅显示列表框中的未读通知。然后,当用户点击所有公告时,我希望它们全部再次显示。我正在使用的数据模板将保持不变,无论点击哪个按钮。在WPF中筛选绑定XML数据
正在使用的XML文件中有一个名为read的字段,其中0表示它没有被读取,而1表示它具有并且应该用于过滤。
所以我真的只是寻找过滤或任何好的教程的例子,所以我可以取得一些进展。如果你需要我的任何代码,只是让我知道,我会粘贴在
编辑
现在添加下面的代码以显示数据是如何约束,也是数据的布局。
在XML文件中保持的数据的<XmlDataProvider
x:Key="Article"
Source="/Data/People.xml"
XPath="People/article"/>
<DataTemplate x:Key="AnnouncementTemplate">
<Border Background="#2200FF00"
BorderBrush="Black"
BorderThickness="1"
CornerRadius="8"
Margin="2,4,2,4"
Padding="2"
>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="220"/>
</Grid.ColumnDefinitions>
<Border Background="#2200FF00"
BorderBrush="Black"
BorderThickness="1"
CornerRadius="8"
Margin="2,4,2,4"
Padding="2"
>
<StackPanel Grid.Column="0">
<Image Stretch="Fill" Width="20" Source="Images/BlueOrb.ico" Height="20" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</StackPanel>
</Border>
<StackPanel Grid.Column="1" Margin="5">
<StackPanel Orientation="Horizontal">
<TextBlock FontWeight="Bold" Text="{Binding XPath=./author}" />
<TextBlock Text=" "/>
<TextBlock Text="{Binding XPath=./datetime}" TextTrimming="WordEllipsis"/>
</StackPanel>
<StackPanel>
<TextBlock FontWeight="Bold" Text="{Binding XPath=./title}"/>
</StackPanel>
<StackPanel>
<TextBlock Text="{Binding XPath=./body}" TextTrimming="WordEllipsis"/>
</StackPanel>
</StackPanel>
</Grid>
</Border>
</DataTemplate>
<ListBox Style="{StaticResource SpecialListStyle}"
Name="listBox1"
Margin="10,10,10,10"
Grid.Row="1"
ItemsSource="{Binding Source={StaticResource Article}}"
IsSynchronizedWithCurrentItem="True"
ItemContainerStyle="{StaticResource SpecialListItem}"
ItemTemplate="{StaticResource AnnouncementTemplate}"/>
实施例中,数据要被过滤,以便只显示消息,其中读出== 0
<People>
<article>
<author>Michael</author>
<title>Happy Christmas</title>
<body>Merry Christmas one and all</body>
<priority>1</priority>
<uid>G-0617-8567-EF32-hello</uid>
<audience>0</audience>
<read>0</read>
<datetime>December 31, 2009 23:59:59</datetime>
</article>
<article>
<author>Gary</author>
<title>Landesk</title>
<body>Landesk Distributed</body>
<priority>0</priority>
<uid>G-0618-8567-EF32-hello</uid>
<audience>0</audience>
<read>1</read>
<datetime>December 31, 2009 23:59:59</datetime>
</article>
</People>
一知半解总是有害的,所以请粘贴一些代码以获得更好的输入 – Firoz 2009-12-16 12:05:08
现在非常真实的发布,对于延误是由于假期,感到抱歉。 – manemawanna 2010-01-04 10:54:02