Utilizarea ObjectDataProvider

voturi
3

Nu-mi vine să cred că nimeni nu a ajuns peste acest lucru sau poate eu doar lipsește ceva.

Am un DataSourceController personalizat care se ocupă de recuperarea datelor și cu condiția ca acesta să restul comenzilor de aplicare. Firește, se folosește conexiunea de tip SQL care am, de asemenea, inițializa.

Codul meu App:

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

Acum, vreau să creați ObjectDataProvider în XAML și apoi să-l utilizați pentru date cu caracter obligatoriu în controale:

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

Problema este că DataSourceController nu are un constructor fara parametri si necesita un obiect OracleSQLConnection să fie transmise (care este o proprietate publică în aplicația mea de cod în spatele).

Este acest lucru posibil, la toate? Sau trebuie să recurgă la utilizarea în codul de proprietate DataContext pentru fiecare control Vreau date-bind ?!

Întrebat 12/03/2009 la 13:38
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
5

Aveți posibilitatea să adăugați DataSourceControllerca o resursă (va trebui să facă acest lucru de la codul-spatele dacă nu aveți un constructor fara parametri) și utilizați ObjectDataProvider.ObjectInstance proprietatea pentru a obține DataSourceControllerinstanță, atunci puteți executa metode pe ea:

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 poate lua o resursă:

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

Pot exista probleme în cazul în care dumneavoastră ObjectDataProvidereste în App.xaml în cazul în care acesta a putut fi analizat înainte , DataSourceControllerse adaugă resursa, în cazul în care ați obține o eroare , deoarece „ myDataControllerresurse“ nu ar exista încă.

Publicat 12/03/2009 la 15:47
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more