Frage

Ich versuche, eine Tag -Cloud in WPF basierend auf zu erstellen eine vorhandene Implementierung [Quelle herunterladen]. Ich habe die Implementierung nicht vollständig verstanden und mein Problem ist, dass ich sie an einige andere Werte binden möchte, die in einer Klasse enthalten sind, anstatt das für die Anzahl der Elemente in einer Sammlung geförderten Punkte zu haben. Also in diesem Teil hier,

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

Ich möchte die Schriftart an etwas anderes binden. Wie mache ich das? Woher gehört ItemCount?

Vielen Dank

War es hilfreich?

Lösung

ItemCount gehört zum Gruppe In der Sammlungsansicht, die aus diesem Tag generiert wird.

ZB, wenn ich eine Liste habe

Aabbbc

Und ich gruppiere sie ich bekomme:

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

Der springende Punkt einer Tag-Cloud besteht darin, genau an diese Eigenschaft zu binden, da Sie sich vorstellen möchten, wie oft ein bestimmtes Tag verwendet wird.


Um auf Ihre Kommentare zu antworten, sollte das Bleee-Bones-Setup so etwas sein:

<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>

Ich gehe davon aus, dass Ihre Daten-Objekt-Klasse die Eigenschaften enthüllt Name und Count, um sicherzustellen, dass sich die Größen ändert, wenn die Anzahl steigt, diese Daten-Objekt-Klasse muss implementiert werden INotifyPropertyChanged, Das ist ungefähr alles, was es gibt.

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));
        }
    }
}

Andere Tipps

ItemCount ist eine Eigenschaft der Instanz, die in der DataContext -Eigenschaft des WPF -Objekts enthalten ist, das Sie ändern möchten. Im Hierarchiebaum, alles von FrameworkElement Weiter erbt die Eigenschaft "Datacontext".

Mit "Snoop" Sie können sich zur Laufzeit in den UI -Baum einer WPF -App untersuchen und z. B. herausfinden, welche Objekte zu einem bestimmten Zeitpunkt in Ihrem DataContext leben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top