2016-11-15 68 views
0

因此,我正在開發通用Windows平臺。我的圖像從網站爲Base64字符串拉動並將其轉換爲使用byte[] imageBytes = Convert.FromBase64String(srcString);字節數組轉換是一個BitmapImage的用下面的代碼:將從ByteStream獲取的BitmapImage綁定到UWP上的ImageBrush C#

public async static Task<BitmapImage> ImageFromBytes(Byte[] bytes) 
{ 
    BitmapImage image = new BitmapImage(); 
    using (InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream()) 
    { 
     await stream.WriteAsync(bytes.AsBuffer()); 
     stream.Seek(0); 
     await image.SetSourceAsync(stream); 
    } 
    return image;   
} 

看起來像這樣正確的拉在我的形象BitmapImage對象中圖像的三維屬性填充正確。問題是,我需要使用圖像畫筆使用此圖像對象作爲一個GridView項模板的背景下面的XAML代碼:

<GridView.ItemTemplate> 
      <DataTemplate x:DataType="models:data" > 
       <StackPanel 
       Orientation="Horizontal" 
       HorizontalAlignment="Center" 
       Width="190" 
       Height="270" 
       BorderThickness="1" BorderBrush="DarkBlue" 
       > 

        <StackPanel.Background> 
         <ImageBrush Stretch="Fill" ImageSource="{x:Bind Image}"/> 
        </StackPanel.Background> 
        <StackPanel HorizontalAlignment="Center" Padding="5" > 
         <StackPanel Orientation="Horizontal" > 
          <TextBlock Text="Title:" FontWeight="Bold" /> 
          <TextBlock Name="Block" Margin="5,0,0,0" 
          Text="{x:Bind Title}" /> 
         </StackPanel> 
        </StackPanel> 
       </StackPanel> 
      </DataTemplate> 
     </GridView.ItemTemplate> 

我後面的代碼設置正確,因爲如果我喂本地URI中的圖像綁定變量,然後一切工作完美無瑕。但是,由於我製作的BitmapImage中的URI屬性爲空,因此我無法僅爲其獲取URI並將其用於綁定。將圖像作爲字節數組獲取是我能夠做到的唯一方法。有沒有辦法使用這個圖像我拉入一個字節流並將其綁定到我的XAML代碼?

感謝, 肯尼

+0

它與'ImageSource =「{綁定圖像}」'工作嗎?你也應該向我們展示你的Image屬性的聲明。 – Clemens

+0

謝謝克萊門斯!這實際上工作!綁定比x有更多的兼容性:然後綁定? –

回答

1

使用

ImageSource="{Binding Image}" 

代替

ImageSource="{x:Bind Image}" 

雖然x:Bind需要一個確切的類型匹配,Binding從幾個源類型採取內置轉換的優點(例如stringUribyte[])至ImageSource

+0

如果我想要在項目模板之外訪問此圖像,是否還有其他需要做的事情?只說出主外網格下的圖像對象? –

+0

不確定你的意思。如果在視圖模型中有一個Image屬性,則綁定到它應該看起來像這裏顯示的一樣。 – Clemens

0

改變了ImageSource的

ImageSource="{Binding Image}" 

許多感謝克萊門斯!