<DataTemplate DataType="{x:Type d:TestUser}">
            <Border BorderBrush="#FF595959" x:Name="back">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"></ColumnDefinition>
                        <ColumnDefinition Width="Auto"></ColumnDefinition>
                    </Grid.ColumnDefinitions>
                    <Border Margin="5" BorderThickness="3" Grid.Column="0" CornerRadius="5" Height="60" BorderBrush="BlanchedAlmond">
                        <Image Margin="0.5" Stretch="Fill" HorizontalAlignment="Stretch" 
                           VerticalAlignment="Stretch" Source="{Binding UserFace}"/>
                    </Border>
                    <StackPanel Grid.Column="1" Orientation="Vertical">
                        <TextBlock Margin="5" Text="{Binding UserName}"></TextBlock>
                        <TextBlock x:Name="message" Margin="5" TextWrapping="Wrap" MaxHeight="60" MaxWidth="{Binding ElementName=back,Path=Width}"
                               TextTrimming="CharacterEllipsis" Text="{Binding UserMessage}"></TextBlock>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Margin="5">注册时间 : </TextBlock>
                            <TextBlock Margin="5" Text="{Binding UserLogTime}"></TextBlock>
                        </StackPanel>
                    </StackPanel>
                </Grid>
       </Border>
</DataTemplate>TestUser.UserFace 是System.Windows.Media.Imaging.BitmapImage类型。
从数据库读取二进制文件.
数据绑定的时候,好像不能直接使用BitmapImage类型和Image.Source属性绑定。
本来想用继承TypeConvert来搞。
后面发现还是存在绑定问题。求大侠指点。

解决方案 »

  1.   

    Source需要指定一个URI,如果要用BitmapImage绑定,则Source = new BitmapImage(new Uri("face.jpg", UriKind.RelativeOrAbsolute));
    你需要将二进制的图片先存到本地,然后通过路径去访问
    Xaml里其实一回事,关键是这张图片要能通过URI的形式获取到
      

  2.   

    BitmapImage bitmapImage;
    bitmapImage = new BitmapImage();
    bitmapImage.BeginInit();
    bitmapImage.StreamSource = System.IO.File.OpenRead(@"E:\2.jpg");
    bitmapImage.EndInit();
    image.Source = bitmapImage;
      

  3.   

    我现在已经拥有了BitmapImage.
    这是从数据库读取的二进制转换的。(我单独测试转成后的BitmapImage可以显示图片).
    所以,现在绑定的并不是路劲.