Pregunta

Tengo una simple IMarkUpextension de la siguiente manera:

public class HelloWorldMarkup : IMarkupExtension<string>
{
    public string ProvideValue(IServiceProvider serviceProvider)
    {
        return "Hello World";
    }
    public override string ToString()
    {
        return "DesignTime Hello World";
    }
}

y mi xaml que lo usa así.

<StackPanel>
    <TextBlock Text="{my:HelloWorldMarkup}" />
    <HyperlinkButton Content="{my:HelloWorldMarkup}" />
</StackPanel>

En tiempo de ejecución, todo funciona como se esperaba.

Sin embargo, en el momento del diseño, el contenido del hipervínculo muestra los valores de tiempo de diseño (de ToString), pero el texto del bloqueo de texto no se muestra.

Si lo dejo así, mi diseñador me hará caer durante días. ¿Alguien tiene alguna sugerencia sobre cómo puedo hacer que mis marcados muestren datos de tiempo de diseño en el texto de Bloxcloquial?

Muchas gracias,

¿Fue útil?

Solución

probar..

<TextBlock DataContext="{my:HelloWorldMarkup}" Text="{Binding}" />

Otros consejos

Estás a medio camino en el camino correcto. Hay una buena solución para este problema ("por diseño"):

Use la interfaz IMarkUpextension y deriva de algún control con una propiedad de contenido (por ejemplo, ContentControl). Ahora escuche los cambios en la propiedad "Parent" (es posible que tenga que usar una solución complicada utilizando propiedades adjuntas). La devolución de llamada del evento debe llamar a ProValue por sí solo utilizando una implementación personalizada de IProvidevaluetArget. El resultado de ProValue debe asignarse a la propiedad "Contenido". Esto no afecta el tiempo de ejecución, ya que proporcionar Value se evaluará antes del control y funciona como un encanto en el tiempo de diseño.

También estoy pensando en instalar un enlace en la propiedad de destino, reduciendo así la clase base a FrameWorkElement.

Referirse a https://github.com/mrcircuit/xamlmarkupextensions y https://github.com/mrcircuit/wpflocalizatingExtension Para un ejemplo de este proceso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top