Bindung von const-Membern in Code hinter XAML in WPF

8

Gibt es eine gute Möglichkeit, eine Eigenschaft an einen konstanten Wert im Codebehind zu binden?

Wenn ich ComboBox benutze, mache ich normalerweise diesen Weg in xaml und Code hinterher:

XAML:

%Vor%

Codebehind:

%Vor%

Der Grund, warum ich diesen Weg gewählt habe, ist folgender:

  • Zur Lokalisierung sollte die Inhaltszeichenfolge nicht verwendet werden, um zu bestimmen, welches Element beim Speichern und Laden eines zuletzt ausgewählten Elements ausgewählt wurde.
  • Der Einfachheit halber sollten XAML und Code-Behind interne Identifikatoren sein (In diesem Fall Uid). Damit können XAML und Code-Behind getrennt gepflegt werden.

Allerdings sollte der interne Bezeichner in der Wartung wie folgt definiert sein:

%Vor%

Das Problem ist anscheinend, dass die Eigenschaft nicht const-Wert sein kann, also gibt es keine Möglichkeit, ID_foo und ID_bar an Uid of ComboBoxItem wie folgt zu binden:

%Vor%

Ich möchte also wissen, wie ich dieses Problem lösen kann. Oder gibt es einen besseren Weg, es zu implementieren? Es wäre auch nett.

Am besten,

    
Aki24x 16.03.2011, 22:20
quelle

2 Antworten

18

Es wäre besser, die StaticExtension zu verwenden :

%Vor%

Wo local ist ein xmlns-Alias ​​für den C # -Namespace Ihrer Klasse. Weitere Informationen finden Sie hier .

Das Problem bei der Verwendung von Binding ist, dass Sie viel Overhead für etwas hinzufügen, das sich niemals ändert. Die Bindung wird versuchen, Ihr Eigentum zu überwachen. Außerdem gibt es bekannte "Lecks" mit einer Bindung mit einer nicht abhängigen Eigenschaft für ein Objekt, das nicht implementiert wird INotifyPropertyChanged.

    
CodeNaked 16.03.2011, 22:55
quelle
2

Sie müssen eine Eigenschaft erstellen, die die Konstante zurückgibt (definiert in einem const), dh:

%Vor%

Sobald dies in einer Eigenschaft ist, wird es durch Bindung nutzbar sein.

    
Reed Copsey 16.03.2011 22:25
quelle

Tags und Links