Using ObjectDataProvider

I can’t believe that no one has dealt with this, or maybe I just missed something.

I have a custom DataSourceController that processes data and provides it to the rest of the application controls. Naturally, it uses a sql connection, which is also initialized.

My application code:

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);
}

Now I want to create an ObjectDataProvider in XAML and then use it to bind data in controls:

<ObjectDataProvider ObjectType="{x:Type data:DataSourceController}" x:Key="DataSource" MethodName="GetVenues" />

The problem is that the DataSourceController does not have a constructor without parameters and requires that the OracleSQLConnection object be passed (which is a public property in my application code).

? DataContext , ?!

+3
1

DataSourceController ( , ) ObjectDataProvider.ObjectInstance, DataSourceController, :

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 :

<ObjectDataProvider ObjectInstance="{StaticResource myDataController}" x:Key="DataSource" MethodName="GetVenues" />

, ObjectDataProvider App.xaml, DataSourceController, , myDataController t .

+5

Source: https://habr.com/ru/post/1704656/


All Articles