我对开发非常陌生,所以我正在尝试构建一个小程序,允许用户搜索员工姓名并返回其他信息,包括员工照片。
在WPF中构建它,后面有C#代码,员工详细信息存储在XML文件中。
我可以通过搜索从XML中获取工作人员的详细信息,但我需要返回图像,以便它可以作为结果显示在datatemplate中。
如何最好地将信息存储在XML中并将其与搜索结果一起检索?
提前致谢。
标记
答案 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的书籍,这很有意思,也是一个好的开始。 ;)