Fork me on GitHub

Silverlight显示数据库二进制字段图片(RadTileView)

DB

[Photo] [varbinary](max)

 ImageConvert.cs

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Media.Imaging; 
using System.IO; 
using System.Windows.Data;

namespace SGSGHome.Views.Common
{
    public class ImageConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
            {
                return null;
            }

            byte[] imgByte = (byte[])value;
            BitmapImage img = new BitmapImage();
            img.SetSource(new MemoryStream(imgByte));
            return img;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}

 Xaml

<controls:ChildWindow x:Class="SGSGHome.Views.Common.UserProfileView"
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
           xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
           Width="1200" Height="600" 
           xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
           xmlns:local="clr-namespace:SGSGHome.Views.Common"
           Title="人员档案">
    <ContentControl.Resources>
        <local:ImageConverter x:Key="imgConvert"/>
        <DataTemplate x:Key="contentTemplate">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="70"/>
                    <RowDefinition Height="30"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="100"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Image Source="{Binding Photo,Converter={StaticResource imgConvert}}" Grid.RowSpan="2" HorizontalAlignment="Right"/>
                <Grid Grid.RowSpan="2" Grid.Column="1">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="25"/>
                        <RowDefinition Height="25"/>
                        <RowDefinition Height="25"/>
                        <RowDefinition Height="25"/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="80"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <TextBlock Text="名称:" FontWeight="Bold"  Grid.Row="0" Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Center"/>
                    <TextBlock Text="{Binding SamAccountName}" TextDecorations="Underline"  Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Center"/>
                    <TextBlock Text="职位:" FontWeight="Bold" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Center"/>
                    <TextBlock Text="{Binding Title}" TextDecorations="Underline"  Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Center"/>
                    <TextBlock Text="邮箱:" FontWeight="Bold" Grid.Row="2" Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Center"/>
                    <TextBlock Text="{Binding Mail}" TextDecorations="Underline" Grid.Row="2" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Center"/>
                    <TextBlock Text="电话:" FontWeight="Bold" Grid.Row="3" Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Center"/>
                    <TextBlock Text="{Binding Ext}" TextDecorations="Underline" Grid.Row="3" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Center"/>
                </Grid>
                <StackPanel Grid.Row="2" Grid.ColumnSpan="2" Margin="5,20,5,5">
                    <Border                 
                        Background="#DDFFFFFF"
                        BorderThickness="5"
                        BorderBrush="SkyBlue"
                        CornerRadius="10"
                        Padding="5">
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="30"/>
                                <RowDefinition Height="30"/>
                                <RowDefinition Height="30"/>
                                <RowDefinition Height="30"/>
                                <RowDefinition Height="30"/>
                                <RowDefinition Height="30"/>
                                <RowDefinition Height="30"/>
                                <RowDefinition Height="90"/>
                                <RowDefinition Height="*"/>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="60"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <TextBlock Text="负责项目:" FontWeight="Bold" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Top"/>
                            <TextBlock Text="{Binding ProjectRelateDesc}" TextDecorations="Underline" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                            <TextBlock Text="项目经理:" FontWeight="Bold" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Top"/>
                            <TextBlock Text="{Binding ProjectManagerDesc}" TextDecorations="Underline" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                            <TextBlock Text="移动手机:" FontWeight="Bold" Grid.Row="2" Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Top"/>
                            <TextBlock Text="{Binding Mobile}" Grid.Row="2" TextDecorations="Underline" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                            <TextBlock Text="Q Q号码:" FontWeight="Bold" Grid.Row="3" Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Top"/>
                            <TextBlock Text="{Binding QQ}" Grid.Row="3" TextDecorations="Underline" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                            <TextBlock Text="所属部门:" FontWeight="Bold" Grid.Row="4" Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Top"/>
                            <TextBlock Text="{Binding Department}" TextDecorations="Underline" Grid.Row="4" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                            <TextBlock Text="部门经理:" FontWeight="Bold" Grid.Row="5" Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Top"/>
                            <TextBlock Text="{Binding Manager}" TextDecorations="Underline" Grid.Row="5" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                            <TextBlock Text="公司名称:" FontWeight="Bold" Grid.Row="6" Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Top"/>
                            <TextBlock Text="{Binding Company}" TextDecorations="Underline" Grid.Row="6" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                            <TextBlock Text="个人说明:" FontWeight="Bold" Grid.Row="7" Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Top"/>
                            <TextBlock Text="{Binding SelfDesc}" TextDecorations="Underline" Grid.Row="7" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Top" TextWrapping="Wrap"/>
                        </Grid>
                    </Border>
                </StackPanel>
            </Grid>
        </DataTemplate>
        <DataTemplate x:Key="headerTemplate">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding DisplayName}" />
            </StackPanel>
        </DataTemplate>
    </ContentControl.Resources>
    <Grid x:Name="LayoutRoot" Margin="0">
        <Grid.RowDefinitions>
            <RowDefinition Height="30" />
            <RowDefinition Height="*" />
            <RowDefinition Height="40" />
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
            <TextBlock Margin="1" VerticalAlignment="Center">架构组织:</TextBlock>
            <ComboBox Name="cbLevelTag" Margin="3" Width="100" Height="23" ></ComboBox>
            <TextBlock Margin="1" VerticalAlignment="Center">负责项目:</TextBlock>
            <ComboBox Name="cbProjectRelate" Margin="3" Width="200" Height="23" ></ComboBox>
            <TextBlock Margin="1" VerticalAlignment="Center">项目经理:</TextBlock>
            <ComboBox Name="cbProjectManager" Margin="3" Width="200" Height="23" ></ComboBox>
            <Button Name="btnSearch" Content="查询" Width="40" Height="23" Click="btnSearch_Click" Margin="1" ></Button>
            <Button Name="btnReset" Content="清空" Width="40" Height="23" Click="btnReset_Click" Margin="1"></Button>
        </StackPanel>
        <telerik:RadTileView telerik:StyleManager.Theme="Metro" Grid.Row="1"
            Name="tv" 
            ItemsSource="{Binding}"
            MinimizedColumnWidth="300"
            ContentTemplate="{StaticResource contentTemplate}"
            ItemTemplate="{StaticResource headerTemplate}"
         />
        <Button x:Name="CancelButton" Content="取消" Click="CancelButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,0,0" Grid.Row="2" />
        <Button x:Name="OKButton" Content="确定" Click="OKButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,79,0" Grid.Row="2" />
    </Grid>
</controls:ChildWindow>

Binding

tv.DataContext = e.Result;

 

posted @ 2012-11-09 17:16  Nick.Chung  阅读(523)  评论(0编辑  收藏  举报