ObjectDataprovider 사용
-
11-07-2019 - |
문제
나는 아무도 이것을 가로 질러 얻지 못했거나 아마도 무언가를 놓치지 않았다고 믿을 수 없다.
데이터 검색 및 나머지 애플리케이션 컨트롤에 데이터를 처리하는 사용자 정의 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 객체를 전달해야한다는 것입니다 (이는 내 앱 코드-비만의 공개 속성).
이것이 가능합니까? 아니면 데이터 바인딩하고 싶은 각 컨트롤에 대한 코드 내 데이터 콘텐츠 속성을 사용해야합니까?!
해결책
당신은 추가 할 수 있습니다 DataSourceController
리소스로서 (매개 변수가없는 생성자가없는 경우 Code-Behind에서이를 수행해야 함) 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
"자원은 아직 존재하지 않을 것입니다.