Je souhaite définir un ItemTimplate en fonction de certaines propriétés. Je viens de créer un balisage, où je mets ItemTemplate comme ceci:Silverlight ItemTemplate binding
<controls:Panorama Title="Some Title" ItemsSource="{Binding Modules}" ItemTemplate="{Binding Id, Converter={StaticResource ControlTemplateConverter}}">
<controls:Panorama.Background>
<ImageBrush ImageSource="PanoramaBackground.png"/>
</controls:Panorama.Background>
</controls:Panorama>
et mettre en œuvre ControlTemplateConverter comme ceci:
public class ControlTemplateConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
StringBuilder sbTemp = new StringBuilder();
sbTemp.Append("<DataTemplate ");
sbTemp.Appen("xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' ");
sbTemp.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' ");
sbTemp.Append("<StackPanel>");
sbTemp.Append("<TextBlock Text=\"News News\" />");
sbTemp.Append("</StackPanel>");
sbTemp.Append("</DataTemplate>");
return (DataTemplate)XamlReader.Load(sbTemp.ToString());
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Je me suis inscrit un convertisseur:
<UserControl.Resources>
<converter:ControlTemplateConverter x:Key="ControlTemplateConverter" />
</UserControl.Resources>
Mais quand J'ai mis un point d'arrêt dans ControlTemplateConverter.Convert, il ne s'arrête jamais dans le débogage. ItemSource se charge à chaque fois. Qu'est-ce qui ne va pas? Merci.
Pourquoi avez-vous besoin d'un convertisseur? Ne pouvez-vous pas déclarer votre modèle en XAML? –
Je veux obtenir une liaison dynamique de itemtemplate. Si une propriété est égale à 1, que je veux voir un modèle et etc. Comprenez-vous? J'étudie, que lorsque j'ai défini ItemTemplate comme ceci ItemTemplate = "{Binding Converter = {StaticResource ControlTemplateConverter}}" (sans Id), tout fonctionne bien (convertisseur fonctionne), mais maintenant je ne sais pas comment passer une variable nécessaire. Comment puis-je faire ceci? – SuperXMan