首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ObjectDataProvider

使用ObjectDataProvider
EN

Stack Overflow用户
提问于 2009-03-12 14:38:41
回答 1查看 7.7K关注 0票数 4

我不敢相信没有人能理解这一点,或者我只是错过了一些东西。

我有一个自定义的DataSourceController,它处理检索数据并将其提供给其余的应用程序控件。当然,它使用sql连接,我也对其进行了初始化。

我的App代码:

代码语言:javascript
复制
private ISQLConnection conn;
public ISQLConnection SqlConnection { get { return conn; } }

private DataSourceController dataSource;
public DataSourceController DataSource { get { return dataSource; } }

protected override void OnStartup(StartupEventArgs e) {
    //-------------------------------------------------------
    // Initialize connections
    conn = new OracleSQLConnection("connectionStringHere");

    //-------------------------------------------------------
    // Initialize controllers
    //dataSource = new DataSourceController(conn);

    base.OnStartup(e);
}

现在我想在XAML中创建ObjectDataProvider,然后使用它绑定控件中的数据:

代码语言:javascript
复制
<ObjectDataProvider ObjectType="{x:Type data:DataSourceController}" x:Key="DataSource" MethodName="GetVenues" />

问题是DataSourceController没有无参数的构造函数,需要传入一个OracleSQLConnection对象(这在我的应用程序代码隐藏中是一个公共属性)。

这有可能吗?或者我不得不为我想要数据绑定的每个控件使用代码内的DataContext属性?!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-03-12 16:47:24

您可以将DataSourceController作为资源添加(如果您没有无参数构造函数,则必须从代码隐藏中执行此操作),并使用ObjectDataProvider.ObjectInstance属性获取DataSourceController实例,然后您可以在其上执行方法:

代码语言:javascript
复制
private ISQLConnection conn;
public ISQLConnection SqlConnection { get { return conn; } }

private DataSourceController dataSource;
public DataSourceController DataSource { get { return dataSource; } }

protected override void OnStartup(StartupEventArgs e) {
   //-------------------------------------------------------
   // Initialize connections
   conn = new OracleSQLConnection("connectionStringHere");

   //-------------------------------------------------------
   // Initialize controllers
   dataSource = new DataSourceController(conn);
   this.Resources.Add("myDataController", dataSource);
   base.OnStartup(e);
}

ObjectInstance可以接受一个资源:

代码语言:javascript
复制
<ObjectDataProvider ObjectInstance="{StaticResource myDataController}" x:Key="DataSource" MethodName="GetVenues" />

如果您的ObjectDataProvider在App.xaml中,在添加DataSourceController资源之前可以对其进行解析,那么可能会出现问题,在这种情况下,您会得到一个错误,因为"myDataController“资源还不存在。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/638911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档