Domanda

Sono un po 'bloccati qui. Io sto usando un dragndrop-biblioteca che serializza le UIElements trascinati via XamlWriter.Save ().

Ora sto cercando di dragndrop alcune istanze di una classe che estende griglia. nel costruttore i push alcuni elementi nella struttura visiva. il costruttore viene chiamato quando l'oggetto viene deserializzato e gli elementi di ottenere di nuovo aggiunto (e ancora e ancora seconda di come spesso i dragndrop). purtroppo Children.Count mi dice che non ci sono elementi figlio se recuperare il valore dal all'interno del costruttore. se a recuperare da fuori (da myGrid.Children.Count) mi dà l'importo più elevato (indesiderata).

c'è qualche altra funzione dovrei usare per inizializzare le immagini? o in qualsiasi altro modo per evitare questi doppioni?

ringraziamenti e applausi

Nessuna soluzione corretta

Altri suggerimenti

voluto un po ', ma mi sembra di aver trovato una soluzione.
ora sono in grado di creare una classe base che contiene già gli elementi visivi tutte le sottoclassi hanno bisogno. e sono analizzabili tramite XamlWriter / Reader senza duplicati. wow.

1) estendere UserControl (Dont Aggiungi-> UserControl ma Aggiungi-> Class e di ereditare manualmente)
2) mettere lo standard InitializeControl (); al costruttore
3) attuare InitializeControl () e mettere l'interfaccia grafica, bambino aggiungendo e tutto ciò in là
4) xamlwrite / xamlread / ereditano come un matto

spero che sarà utile a qualcuno e che i havent supervisionato l'imprevisto ..

- edit: ovviamente. ci saranno duplicati, ma non possiamo vederli. dopo la XamlReader è attraverso ci sono i UIElements creati dal mio InitializeComponent () e quelli che ottengono XAML-analizzato dopo. tutti i riferimenti nel codice riguardano i controlli di codici creati che NON sono mostrano: /

sospiro.

Un modo lungi dall'essere perfetto intorno a questo è quello di mettere un interruttore in un gestore di eventi Initialized, in questo modo: if(HasContent)
Initialize();
else
Reinitialize();
Multiinitialize();

dove l'Initialize () aggiungerebbe i UIElements alla struttura ad albero visuale, il Reinitialize () solo trova i riferimenti giusti (da control = FindName("controlName")) e il Multiinitialze () ricrea i gestori di eventi e che altro si perde lungo la strada throug il XamlReader.

Bene, ora è possibile creare un'istanza il costume ereditato UserControl in XAML, ma non v'è alcun modo semplice per attributi impostati. questo perché fissa gli attributi avviene prima della evento inizializzata e ci sono NullPointerExceptions attesa. si potrebbe lavorare in giro che con attacchi credo.

, ma ci deve essere un modo più semplice. per favore fatemelo sapere!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top