Problemi di progettazione con .Net UserControl
-
08-06-2019 - |
Domanda
Ho creato un UserControl che ha un file ListView
dentro.ListView è accessibile pubblicamente tramite una proprietà.Quando inserisco UserControl in un modulo e provo a progettare il file ListView
sebbene la proprietà, il ListView
rimane così finché non ricompilo di nuovo e ritorna allo stato predefinito.
Come faccio a far sì che le modifiche al mio design rimangano valide per il file ListView
?
Soluzione
Devi decorare la proprietà ListView con l'attributo DesignerSerializationVisibility, in questo modo:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public ListView MyListView { get { return this.listView1; } }
Questo dice al generatore di codice del progettista di produrre il codice per esso.
Altri suggerimenti
Federico è corretto, in sostanza, quando è necessario consentire al progettista di rendere persistente la proprietà nella pagina in modo che possa essere istanziata in fase di esecuzione.C'è solo un modo per farlo, ovvero scrivere i suoi valori nella pagina ASPX, che viene poi rilevata dal runtime.
Altrimenti, il controllo tornerà semplicemente al suo stato predefinito ogni volta.
Tieni sempre presente che la pagina (e i suoi contenuti) e il codice sono completamente separati in ASP.NET, sono collegati in fase di esecuzione.Ciò significa che non ottieni il simpatico supporto del designer code-behind come fai in un'app WinForms (dove il modulo è un'istanza di un oggetto).
Tanto per essere chiaro, hai fatto qualcosa del genere, giusto?
public ListView MyListView { get { return this.listView1; } }
Quindi stai accedendo (in fase di progettazione) alla proprietà MyListView sul tuo UserControl?
Penso che se desideri un supporto adeguato in fase di progettazione è meglio modificare la proprietà "Modificatore" sul ListView stesso (di nuovo sull'UserControl originale) su Public: in questo modo puoi modificare il ListView direttamente sulle istanze dell'UserControl.Ho avuto successo comunque nel farlo.