ObjectDataProvider का उपयोग करना

वोट
3

मैं विश्वास नहीं कर सकता है कि कोई भी इस पार हो गया है या शायद मैं सिर्फ कुछ याद कर रहा हूँ।

मैं जो डेटा पुन: प्राप्त है और यह आवेदन नियंत्रण के आराम करने के उपलब्ध कराने के हैंडल एक कस्टम 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);

    base.OnStartup(e);
}

अब मैं XAML में ObjectDataProvider बनाने और उसके बाद नियंत्रण में डेटा बाइंडिंग के लिए इसका उपयोग करना चाहते:

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

समस्या यह है कि DataSourceController एक parameterless निर्माता नहीं है और पास होने के लिए एक OracleSQLConnection वस्तु (जो मेरे App में एक सार्वजनिक संपत्ति कोड-पीछे है) की आवश्यकता है।

क्या ये संभव भी है? या मैं प्रत्येक नियंत्रण मैं डेटा-बाँध करना चाहते हैं के लिए इन-कोड DataContext संपत्ति का उपयोग कर का सहारा लेना है ?!

12/03/2009 को 15:38
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
5

आप जोड़ सकते हैं DataSourceControllerएक संसाधन के रूप और का उपयोग करें (आप अगर आप एक parameterless निर्माता की जरूरत नहीं है से कोड-पीछे यह करना होगा) 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" संसाधनों अभी तक अस्तित्व में नहीं होता।

12/03/2009 को 17:47
का स्रोत उपयोगकर्ता

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