Pergunta

Eu estou trabalhando em um Silverlight controle modelo (ou seja, ele deriva de Controle e tem o seu aspecto implementado como um ControlTemplate em generic.xaml) e me deparei com a necessidade de um ValueConverter em uma das minhas ligações. Normalmente eu apenas criar uma instância da ValueConverter nos Recursos do controle trabalhando com mas eu não consigo descobrir como fazer isso com um ControlTemplate. Eu gostaria de manter esta aplicação tudo em Xaml se possível, mas eu suponho que eu poderia substituir OnApplyTemplate e criar manualmente a ligação com um conversor.

Foi útil?

Solução

Isto funciona no Silverlight 3. Você só precisa adicionar uma seção recursos dentro de seu modelo de controle e adicionar o ValueConverter aos recursos do modelo:

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

No entanto, ValueConverters muitas vezes utilizados em modelos de controle. Você pode querer usar um TypeConverter vez. Likes Bryant escreveu um bom artigo que discute o diferença entre ValueConverter e TypeConverter neste cenário .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top