4

誰もこれに出くわしていないか、何かが足りないだけだとは信じられません。

データの取得と残りのアプリケーションコントロールへの提供を処理するカスタムDataSourceControllerがあります。当然、それは私も初期化するSQL接続を使用します。

私のアプリコード:

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を作成し、それをコントロールのデータのバインドに使用します。

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

問題は、DataSourceControllerにパラメーターのないコンストラクターがなく、OracleSQLConnectionオブジェクトを渡す必要があることです(これは、私のAppコードビハインドのパブリックプロパティです)。

これは可能ですか?または、データバインドするコントロールごとにコード内のDataContextプロパティを使用する必要がありますか?!

4

1 に答える 1

6

をリソースとして追加し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" />

ObjectDataProviderApp.xamlにいて、リソースを追加する前に解析できる場合は問題が発生する可能性があります。その場合、「 」リソースがまだ存在しないDataSourceControllerため、エラーが発生します。myDataController

于 2009-03-12T16:47:24.120 に答える