2012-02-14 93 views
0
public ImageSource imagesource 
{ 
    get 
    { 
     string [email protected]"Provider=Microsoft.Jet.OLEDB.4.0;DataSource='C:\picdata.mdb'"; 
     OleDbConnection cn = new OleDbConnection(constring); 

     cn.Open(); 
     OleDbDataAdapter da = new OleDbDataAdapter("select * from picdata", cn); 
     DataSet ds = new DataSet(); 
     da.Fill(ds); 
     cn.Close(); 

     var Img = new BitmapImage(); 
     Img.BeginInit(); 
     byte[] content = (byte[])ds.Tables[0].Rows[0].ItemArray[0]; 
     MemoryStream stream = new MemoryStream(content); 
     Img.StreamSource = stream; 
     Img.EndInit(); 

     return Img; 
    } 
} 

XAML文件WPF和數據綁定問題

<my:DataGrid AutoGenerateColumns="True" Margin="308,12,255,50" Name="dataGrid3" > 
    <my:DataGridTemplateColumn Header="Image" > 
     <my:DataGridTemplateColumn.CellTemplate> 
      <DataTemplate> 
       <Image Name="display" Margin="201,29,0,0" Stretch="Fill" Source="{Binding imageSource}">  </Image> 
      </DataTemplate> 
     </my:DataGridTemplateColumn.CellTemplate> 
    </my:DataGridTemplateColumn> 
</my:DataGrid> 

酒店imagesource,則不會調用。你有什麼建議嗎?
我已經成功地完成了使用C#和DataGridView的轉換和綁定,但我無法找出使用WPF。我對WPF完全陌生,所以任何幫助將不勝感激。
我還能如何將包含圖片的訪問數據庫(需要轉換)成功綁定到DataGrid?爲什麼imagesource屬性不被執行?

回答

1

我強烈建議你閱讀一些關於WPF的教程。看起來你需要一些WPF基礎知識。有很多原因,你的代碼將無法正常工作...

我推薦WPF DataGrid和WPF 4 Unleashed(亞馬遜網站)的this one作爲關於WPF的一般閱讀。

  • 您的視圖模型需要實現INotifyChanged接口,這樣用戶界面將知道在哪裏以及何時尋求改變的屬性。

  • 二傳手 - 沒有消氣 - 你需要調用一個PropertyChangedEvent通知用戶界面,以應對它。

  • 只是一個getter的代碼太多。每次調用屬性獲取器時,都會打開數據庫連接。一個getter應該只返回一個簡單的值而不用訪問昂貴的資源。 (Hava看看微軟的Rico Marian的博客,關於這個主題here。)