Question

Je suis en train de construire un nuage de tags dans WPF basé sur une implémentation existante [ Télécharger Source ]. Je ne comprends pas tout à fait la mise en œuvre et mon problème est qu'au lieu d'avoir le FontSize binded au nombre d'éléments dans une collection, je veux lier à d'autres valeurs contenues dans une classe. Donc, dans cette partie ici,

FontSize="{Binding Path=ItemCount, Converter={StaticResource CountToFontSizeConverter}}"

Je veux lier le FontSize à autre chose. Comment je fais ça? D'où vient ItemCount appartiennent à?

Merci

Était-ce utile?

La solution

ItemCount appartient à la groupe à l'intérieur de la vue de la collection qui est générée à partir de cette balise.

par exemple. si j'ai une liste

A A B B B C

Et groupe je les i obtenir:

Groupe A: ItemCount = 2
Groupe B: ItemCount = 3
Groupe C: ItemCount = 1

Le point entier d'une balise-Cloud est de se lier à cette propriété très parce que vous voulez visualiser la fréquence d'une certaine balise est utilisée.


Pour répondre à vos commentaires, devrait être quelque chose comme la configuration bare-bones ceci:

<ItemsControl ItemsSource="{Binding Data}">
    <ItemsControl.Resources>
        <vc:CountToFontSizeConverter x:Key="CountToFontSizeConverter"/>
    </ItemsControl.Resources>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}" Margin="2"
                       FontSize="{Binding Count, Converter={StaticResource CountToFontSizeConverter}}"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Je suppose que votre classe de données objet expose les propriétés Name et Count, pour vous assurer que les changements de taille que le nombre monte que les besoins de la classe de données d'objets pour mettre en œuvre INotifyPropertyChanged , qui est tout ce qu'il ya à elle.

public class Tag : INotifyPropertyChanged
{
    private string _name = null;
    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value)
            {
                _name = value;
                OnPropertyChanged("Name");
            }
        }
    }

    private int _count = 0;
    public int Count
    {
        get { return _count; }
        set
        {
            if (_count != value)
            {
                _count = value;
                OnPropertyChanged("Count");
            }
        }
    }

    //...

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string propertyName)
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

Autres conseils

ItemCount est une propriété de quelque instance est contenue dans la propriété DataContext de l'objet WPF vous voulez changer le FontSize de. Dans l'arborescence de la hiérarchie, tout de FrameworkElement hérite partir de la propriété « DataContext ».

« Snoop » vous pouvez regarder dans l'arborescence de l'interface utilisateur d'une application WPF lors de l'exécution et par exemple savoir quels objets vivent dans votre DataContext à un moment donné.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top