【问题标题】:WPF and databinding issueWPF 和数据绑定问题
【发布时间】:2012-02-14 08:14:11
【问题描述】:
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 属性没有被执行?

【问题讨论】:

    标签: c# xaml data-binding wpfdatagrid


    【解决方案1】:

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

    我推荐this one 用于 WPF DataGrid,WPF 4 Unleashed (Amazon.com) 作为一般 WPF 的好读物。

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

    • setter - 不是 getter - 您需要调用 PropertyChangedEvent 来通知 UI 对其做出反应。

    • 对于一个 getter 来说代码太多。每次调用属性 getter 时都会打开数据库连接。 getter 应该只返回一个简单的值而不访问昂贵的资源。 (请查看 Microsoft 的 Rico Marian 关于此主题的博客 here。)

    【讨论】:

      猜你喜欢
      • 2011-10-18
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多