2012-02-14 13 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にはthis one、一般的にはWPFについては、WPF 4 Unleashed(Amazon.com)をお勧めします。

  • はあなたのViewModelはUIがいつどこで変更されたプロパティを探すために知っているようにINotifyChangedインタフェースを実装する必要があります。 セッター

  • からないゲッター - あなたはそれに反応するUIを通知PropertyChangedEventを呼び出す必要があります。

  • ゲッターのコードが多すぎます。データベース接続は、プロパティゲッターを呼び出すたびに開かれます。ゲッターは、高価なリソースにアクセスすることなく、単純な値を返してください。 (このトピックについてのMicrosoftのRico Marianのブログをご覧ください。here

関連する問題