Pregunta

Estoy trabajando en un control con plantilla de Silverlight (es decir, se deriva de Control y tiene su aspecto implementado como ControlTemplate en generic.xaml) y descubrí la necesidad de un ValueConverter en uno de mis enlaces. Normalmente, solo crearía una instancia del ValueConverter en los recursos del control trabajando pero no puedo averiguar cómo hacerlo con una ControlTemplate. Me gustaría mantener esta implementación en Xaml, si es posible, pero supongo que podría anular OnApplyTemplate y crear manualmente el enlace con un convertidor.

¿Fue útil?

Solución

Esto funciona en Silverlight 3. Solo necesita agregar una sección de recursos dentro de su plantilla de control y agregar el ValueConverter a los recursos de la plantilla:

<ControlTemplate TargetType="controls:MyControl">
    <Grid Margin="8,40,8,20" x:Name="peopleListContainer">        
        <Grid.Resources>
            <controls:MyValueConverter x:Key="converter" />
        </Grid.Resources>
        <!-- ....

Sin embargo, los ValueConverters a menudo se usan mal en las Plantillas de control. Es posible que desee utilizar un TypeConverter en su lugar. Bryant Likes escribió un buen artículo sobre el diferencia entre ValueConverter y TypeConverter en este escenario .

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