WPF和数据绑定问题

时间:2012-02-14 08:14:11

标签: c# xaml data-binding wpfdatagrid

public ImageSource imagesource
{
   get
   {
      string constring=@"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文件

<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 个答案:

答案 0 :(得分:1)

我强烈建议您阅读一些关于WPF的教程。看起来你需要一些WPF基础知识。您的代码无法正常工作的原因很多......

我建议将this one用于WPF DataGrid和WPF 4 Unleashed(Amazon.com)作为一般的WPF阅读材料。

  • 您的ViewModel需要实现INotifyChanged接口,以便UI知道在何处以及何时查找已更改的属性。

  • setter - 而非getter 中,您需要调用PropertyChangedEvent来通知UI对其做出反应。

  • 只有一个吸气剂的代码太多了。每次调用属性getter时都会打开数据库连接。 getter应该只返回一个简单的值而无需访问昂贵的资源。 (Hava看看微软的Rico Marian关于这个主题的博客here。)