5 Stimmen

Warum muss ich "Ressourcen" in WPF verwenden?

Ich tauche gerade in WPF ein und finde das etwas seltsam und frustrierend für meinen Stil: Warum kann der Wert von etwas eine Ressource sein, aber man kann den Wert nicht direkt auf das setzen, was die Ressource repräsentiert? Beispiel:

Dies ist gültig:

            <Setter Property="Content" Value="{DynamicResource cancelImage}" />

Aber dies ist es nicht:

            <Setter Property="Content">
                <Setter.Value>
                    <Image Source="cancel.png" />
                </Setter.Value>
            </Setter>

Was ist der Unterschied? Warum funktionieren beide nicht? Mir gefällt es nicht, für manche Dinge eine "Resource" erstellen zu müssen, da es meinen Code aufteilt und es schwieriger machen kann, ihn zu lesen.

Und ja, ich weiß, dass mein Beispiel so vereinfacht werden kann

aber darum geht es nicht.

3voto

Abe Heidebrecht Punkte 29382

Beim Arbeiten mit Settern muss der Wert für den Setter die Fähigkeit unterstützen, "eingefroren" zu werden. Das kann ein Werttyp (einschließlich Strukturen und Aufzählungen) oder eine Klasse sein, die von Freezable abgeleitet ist.

Es mag Ihrem ästhetischen Sinn nicht viel helfen, aber es ist oft sauberer, alle Ihre Ressourcen am Anfang des Ressourcenabschnitts der Datei (oder ResourceDictionary) zu deklarieren, anstatt sie den Ressourcen eines individuellen Stils oder einer Steuerelement hinzuzufügen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X