2010-12-04 7 views
2

Je remplis une classe dans un programme au moment de l'exécution et j'ai commencé par créer une collection de classes InlineCollection. Cependant, la classe InlineCollection ne peut pas être instanciée.Création d'une instance WPF InlineCollection

Ma question est, comment puis-je ajouter une collection d'inlines à Span.Inlines dont le type est InlineCollection, si je ne peux pas créer une instance de celui-ci?

Fondamentalement, j'ai besoin d'une collection d'une collection de classes Inline, donc je peux définir au hasard Span.Inlines à une nouvelle collection de classes Inline.

Répondre

2

Jetez un oeil ici: http://msdn.microsoft.com/en-us/magazine/cc163371.aspx

Il ressemble à ce que vous voulez faire est:

span.Inlines.Add(new Run("Some normal text")); 
var b = new Bold(); 
b.Inlines.Add(new Run(" Some bold text")); 
span.Inlines.Add(b); 
+0

Merci, mais ce que je dois est de pouvoir faire quelque chose comme Collection , mais je ne peux pas ajouter une instance de InlineCollection. Je veux configurer une collection de classes InlineCollection afin que je puisse définir span.Inlines à l'exécution à l'un des objets de la collection. J'espère que cela a du sens. –

+1

Je suppose que je pourrais simplement créer une collection d'objets Run, puis ajouter les inlines dont j'ai besoin à chaque objet Run de la collection ?! –

+0

@Carl: Je pense que votre deuxième suggestion est la bonne façon de s'y prendre. –

2

oui, comme vous ne pouvez pas instancier InlineCollection classe, mais ce que vous pouvez faire est d'utiliser par exemple List<Inline> et remplissez-le.

plus tard, il est facile de les appliquer, par exemple, un TextBlock:

// create some inlines 
List<Inline> inlines = new List<Inline>(); 
inlines.Add(new Run() { Text = "text" }); 
Span span = new Span(); 
span.Inlines.AddSafe(new Run() { Text = "text inside span" }); 
inlines.Add(span); 

// now apply to a TextBlock 
TextBlock tb = new TextBlock() { TextWrapping = TextWrapping.Wrap }; 
tb.Inlines.Clear(); 
foreach (Inline i in inlines) 
    tb.Inlines.Add(i); 
Questions connexes