Objective-c/cacao offre una forma di legame in cui le proprietà di un controllo (ad es. Testo in una casella di testo) possono essere associate alla proprietà di un oggetto. Sto cercando di duplicare questa funzionalità in C# con .Net 3.5.Associazione dati a un oggetto in C#
Ho creato la seguente classe molto semplice nelle MyClass.cs di file:
class MyClass
{
private string myName;
public string MyName
{
get
{
return myName;
}
set
{
myName = value;
}
}
public MyClass()
{
myName = "Allen";
}
}
Ho anche creato un semplice modulo con 1 casella di testo e 1 pulsante. Ho avviato un'istanza di Myclass all'interno del codice del modulo e ho creato il progetto. Utilizzando la procedura guidata DataSource in Vs2008, ho scelto di creare un'origine dati basata su oggetto e selezionato l'assembly MyClass. Questo ha creato un'entità dell'origine dati. Ho cambiato l'associazione dati della casella di testo a questa origine dati; tuttavia, il risultato atteso (che il contenuto della casella di testo sarebbe "allen") non è stato raggiunto. Inoltre, inserire del testo nella casella di testo non sta aggiornando la proprietà del nome dell'oggetto.
So che mi manca qualcosa di fondamentale qui. Ad un certo punto dovrei legare la mia istanza della classe MyClass che ho inizializzato all'interno del codice del modulo nella casella di testo, ma ciò non si è verificato. Tutto ciò che ho visto online sembra sorvolare usando DataBinding con un oggetto (o mi manca completamente il marchio), quindi ogni aiuto è molto apprezzato.
Edit:
Utilizzando quello che ho imparato dalle risposte, ho guardato il codice generato da Visual Studio, aveva il seguente:
this.myClassBindingSource.DataSource = typeof(BindingTest.MyClass);
se io commento che fuori e sostituto:
this.myClassBindingSource.DataSource = new MyClass();
Ottengo il comportamento previsto. Perché il codice predefinito generato da VS è come lo è? Supponendo che questo sia più corretto del metodo che funziona, come dovrei modificare il mio codice per funzionare entro i limiti di ciò che VS ha generato?
Il codice predefinito viene gestito in questo modo in modo che in fase di progettazione tutti i controlli conoscano i vari tipi di proprietà che saranno disponibili per il database. Ma in fase di esecuzione è necessaria un'istanza reale. Non rimuovere il codice generato automaticamente, jsut imposta un nuovo valore nel tuo modulo onload o soemthing –