2012-02-14 7 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를 호출해야합니다.

  • 게터에 대한 코드가 너무 많습니다. 속성 getter를 호출 할 때마다 데이터베이스 연결이 열립니다. getter는 값 비싼 리소스에 액세스하지 않고도 간단한 값만 반환해야합니다. (이 주제에 관한 Microsoft의 Rico Marian의 블로그를 보시려면 here.