Path.Data-Styling funktioniert nur bei der ersten Instanz eines Stilobjekts

8

A haben eine ListBox mit Elementen, jedes ListBoxItem enthält ein Symbol in Form eines Path -Objekts, etwa so:

%Vor%

Der Stil des Pfads ist in Appl.xaml ( Application.Resources section) enthalten und lautet wie folgt:

%Vor%

Das Problem ist, dass nur das erste Element in der ListBox die Data Eigenschaft wie erwartet bindet, die anderen es überhaupt nicht binden (daher erscheinen sie als Leerzeichen, stimmen aber mit der Größe von Path überein) ). Auch wenn ich den Stil irgendwo anders verwende (d. H. Außerhalb der ListBox), bindet nur die erste Instanz, die auftritt.

Das Seltsame ist, dass wenn ich zum Beispiel die Fill -Eigenschaft in Style anstelle von inline definiere, es gut funktioniert und nicht dieselben Probleme wie die Path -Eigenschaft aufweist.

Meine Vermutung ist, dass etwas damit zu tun hat, dass Data kein primitiver Typ ist, aber ich habe keine Korrekturen gefunden.

BEARBEITEN: Interessanterweise funktioniert es, wenn ich die Eigenschaft Data direkt an System.String ressource anbinde. Ich möchte trotzdem diese Eigenschaft über einen Style definieren können.

BEARBEITEN SIE 2: Ich habe gerade das gleiche Problem in WPF, beim Festlegen von Pfad zu einem Inhalt einer Schaltfläche über einen Stil, der über mehrere Schaltflächen verwendet wird. Der Pfad wird in nur einer Schaltfläche angezeigt, die anderen sind leer.

    
Jan Kratochvil 04.12.2012, 11:46
quelle

5 Antworten

5

Path.Fill ist eine DependencyProperty, PathData nicht. Stattdessen tun:

%Vor%

ContentPresenter.Content ist eine DependencyProperty, also sollte dies funktionieren:

%Vor%     
user1834059 09.12.2012 04:33
quelle
4

Ich vermute, dass Geometrie nicht freigegeben werden kann. Haben Sie versucht, x:Shared = "false" auf:

zu setzen %Vor%     
Stipo 13.12.2012 23:38
quelle
3

Ich habe das gleiche Verhalten in Silverlight erlebt und eine ähnliche Frage hier auf StackOverflow.com gestellt  ( Ссылка ), aber während ich dies schreibe, war es schon 1 Monat und ich habe noch keine einzige bekommen antworte.

Wie Sie bereits in Ihrer ersten Bearbeitung erwähnt haben, konnte ich jedoch eine Umgehung durchführen, indem ich eine Ressource mit meinen Geometriedaten als String erstellte und dann die Data -Eigenschaft der Path -Objekte an die String-Ressource anbinde Ressource.

Ich musste auch zwei Instanzen der Path -Objekte erstellen, die mit Ausnahme einer anderen Ressource identisch waren (dh zwei verschiedene Symbole) und dann die Sichtbarkeit der einzelnen Objekte an eine Eigenschaft in meinem ViewModel banden, um die entsprechenden Objekte anzuzeigen eins.

    
Alexander 14.12.2012 23:43
quelle
2

Ich bin mir sehr sicher, dass du den Strich hier im Pfadstil nicht vergessen hast

%Vor%

Ich habe Sie Code auf meinem Computer getestet, es funktionierte gut, wenn über Linie in Stil hinzugefügt

    
paritosh 10.12.2012 10:59
quelle
1

Mein erster Gedanke war, dass dein Pfad kaputt wäre oder nicht gültig wäre. Aber dann habe ich gesehen, dass du das Syncfusion Metro Studio benutzt. Ich habe es mit genau dem gleichen Code versucht, den Sie haben, und es hat sehr gut funktioniert. In einer Datenvorlage mit 5 Elementen oder als einzelnes Pfadelement.

Haben Sie versucht, die Füllung statisch auf Rot oder etwas einzustellen?

Versuchen Sie es auch mit der Style-Definition

%Vor%

Der dritte Vorschlag wäre, die Style-Definition von der App auf Ihre Seite oder sogar auf Ihre Control selbst zu verschieben.

Um sicherzustellen, dass keine Standardstile angewendet werden, versuchen Sie

%Vor%

Hoffe das hilft:)

    
Johannes Wanzek 14.12.2012 14:14
quelle

Tags und Links