以XML格式存储图像路径,然后返回带有查询结果的图像

时间:2012-01-13 14:14:12

标签: wpf xml image

我对开发非常陌生,所以我正在尝试构建一个小程序,允许用户搜索员工姓名并返回其他信息,包括员工照片。

在WPF中构建它,后面有C#代码,员工详细信息存储在XML文件中。

我可以通过搜索从XML中获取工作人员的详细信息,但我需要返回图像,以便它可以作为结果显示在datatemplate中。

如何最好地将信息存储在XML中并将其与搜索结果一起检索?

提前致谢。

标记

2 个答案:

答案 0 :(得分:1)

     <Window.Resources>
            <DataTemplate x:Key="SearchResultsTemplate">
                <Grid Margin="4,0,4,8" Width="446" Height="68">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <Border VerticalAlignment="Top" Margin="8" Padding="2" Background="White">
                        <Image Width="40" Height="40" Source="{Binding Path=Avatar, Mode=OneWay}" />
                    </Border>
                    <StackPanel Grid.Column="1" VerticalAlignment="Top" Margin="0,4,0,0">
                        <TextBlock x:Name="AuthorName" FontWeight="Bold" Text="{Binding Path=Author, Mode=OneWay}" />
                        <Grid Margin="0,6,0,0">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto" />
                                <RowDefinition Height="2" />
                                <RowDefinition Height="Auto" />
                            </Grid.RowDefinitions>
                            <TextBlock x:Name="Message" TextWrapping="Wrap" />
                        </Grid>
                    </StackPanel>
             </Grid>
            </DataTemplate>
        </Window.Resources>
        <ScrollViewer  HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" BorderThickness="1">
 <ItemsControl x:Name="SearchResults" Margin="0,8,0,0" 
  Grid.Row="1" ItemTemplate="{StaticResource SearchResultsTemplate}" />
             </ScrollViewer>

代码背后:

 XDocument xdoc = XDocument.Load("data.xml");
 SearchResults.ItemsSource = from item in xdoc.Descendants("Item")
                             where (string)item.Element("Author") == searchInput
                             select new
                             {
                                Author = (string)item.Element("Author"),
                                Message = (string)item.Element("Message"),
                                Avatar = (string)item.Element("Avatar")
                            };

答案 1 :(得分:0)

我想说你应该在XML中存储图片的路径(URI),并使用其余的详细信息数据检索此路径。然后在DataTemplate中,您可以使用绑定到路径设置Images Source属性,然后它应该工作。如果没有,那么使用从您的路径返回BitMapImage的转换器。

Image Source Binding with a Converter

如果你是WPF的新手,那么你应该阅读一些关于WPF和MVVM的书籍,这很有意思,也是一个好的开始。 ;)