Pregunta sobre wpf, xaml, c# – ¿Cómo asignar una ejecución a una propiedad de texto, mediante programación?

10

Sé que en XAML podemos hacer ...

<TextBlock FontSize="18">
   This is my text <LineBreak/>
   <Run FontSize="24" FontWeight="Bold">My big bold text</Run>
</TextBlock>

La pregunta es, ¿cómo puedo asignar una ejecución en una propiedad de texto (cadena) mediante programación?

Tu respuesta

1   la respuesta
17

Si mirasTextBlock verá que ContentProperty está configurado paraInlines

[Localizability(LocalizationCategory.Text), ContentProperty("Inlines")]
public class TextBlock : FrameworkElement, ...

Esto significa que usted agregaráInline elementos a la propiedadInlines Para todo añadido entre la etiqueta de apertura y cierre deTextBlock.

Así que el c # equivalente a tu Xaml es

TextBlock textBlock = new TextBlock();
textBlock.FontSize = 18;
textBlock.Inlines.Add("This is my text");
textBlock.Inlines.Add(new LineBreak());
Run run = new Run("My big bold text");
run.FontSize = 24;
run.FontWeight = FontWeights.Bold;
textBlock.Inlines.Add(run);
@svick: También, me arriesgaré a aprender algo aquí. Puedo verlo en MSDN pero, ¿qué entendiste por atributo o prosa? Fredrik Hedblad
Por cierto, creo que este es un buen ejemplo de código donde los inicializadores de objetos y recopilaciones podrían hacerlo más legible. svick
No es necesario un decompilador, la documentación también puede indicarlo (tanto en forma de atributo como en prosa). svick
@svick: Muy cierto. Usé el reflector solo para poder pegarlo. Pero esa no es la única forma, quitaré esa parte de la respuesta. Fredrik Hedblad
Me refiero a que puedes mirar la sección de sintaxis y ver la[ContentPropertyAttribute], o lea las Observaciones: “ATextBlock puede contener una cadena en suText propiedad oInline Fluye los elementos de contenido […] en suInlines propiedad." svick

Preguntas relacionadas