Domanda

Sto lavorando a un controllo basato su modelli Silverlight (ovvero deriva da Control e ha il suo aspetto implementato come ControlTemplate in generic.xaml) e ho riscontrato la necessità di un ValueConverter in uno dei miei binding. Normalmente creerei un'istanza di ValueConverter nelle Risorse del controllo con cui lavoro ma non riesco a capire come farlo con un ControlTemplate. Vorrei mantenere questa implementazione tutta in Xaml, se possibile, ma suppongo di poter sovrascrivere OnApplyTemplate e creare manualmente l'associazione con un convertitore.

È stato utile?

Soluzione

Questo funziona in Silverlight 3. Devi solo aggiungere una sezione risorse all'interno del tuo modello di controllo e aggiungere ValueConverter alle risorse del modello:

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

Tuttavia, ValueConverters viene spesso utilizzato in modo improprio nei modelli di controllo. È possibile che si desideri utilizzare un TypeConverter. Bryant Likes ha scritto un buon articolo discutendo the differenza tra ValueConverter e TypeConverter in questo scenario .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top