Bindung const Mitglied im code hinten von xaml in WPF
Gibt es eine gute Möglichkeit zum binden einer Eigenschaft auf einen const-Wert im codebehind?
Wenn ich die ComboBox, ich in der Regel nicht auf diese Weise in xaml und code behind:
XAML:
<ComboBox Name="cbBuz">
<ComboBoxItem Content="foo" Uid="foo" IsSelected="true" />
<ComboBoxItem Content="bar" Uid="bar" />
</ComboBox>
Codebehind:
ComboBoxItem item = cbBuz.GetSelectedItem();
switch (item.Uid)
{
case "foo": ... break;
case "bar": ... break;
}
Der Grund, warum ich wählte diese Art und Weise ist folgende:
- Für die Lokalisierung Zweck, Inhalt Schnur sollte nicht verwendet werden, um zu bestimmen, welches Element ausgewählt ist beim speichern und laden der zuletzt ausgewählten Element.
- Für Einfachheit, XAML und code-behind sollte angeschlossen werden interne Kennung (In diesem Fall die Uid). So dass, XAML und Code-behind werden getrennt verwaltet.
Jedoch, Wartung und Weise, die internen Bezeichner definiert werden sollte, in einem Ort wie diesem:
//IDs
public const string ID_foo = "foo";
public const string ID_bar = "bar";
...
//
switch (item.Uid)
{
case ID_foo: ... break;
case ID_bar: ... break;
}
Das problem ist scheinbar Eigenschaft nicht const-Wert, so gibt es keine Möglichkeit zum binden ID_foo und ID_bar Uid von ComboBoxItem wie diese:
//If ID_foo and ID_bar are properties, this will work.
<ComboBox Name="cbBuz">
<ComboBoxItem Content="foo" Uid="{Binding ID_foo}" IsSelected="true" />
<ComboBoxItem Content="bar" Uid="{Binding ID_bar}" />
</ComboBox>
So, ich will wissen, wie dieses Problem zu lösen.
Oder gibt es eine bessere Möglichkeit, es zu implementieren. Es wäre schön, auch.
Besten,
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie wären besser dran mit der StaticExtension, etwa so:
Wo local ist eine xmlns-alias für die C# namespace der Klasse. Weitere Informationen finden Sie hier.
Das problem mit der Bindung, die Sie hinzufügen eine Menge Aufwand für etwas, das nie ändern wird. Die Bindung wird versuchen, Ihre Immobilie zu überwachen. Auch gibt es bekannt "leaks" mit eine Bindung mit einem nicht-Abhängigkeit-Eigenschaft auf ein Objekt, das nicht die INotifyPropertyChanged implementieren.
Die Sie brauchen, um eine Eigenschaft zurückgibt, die die Konstanten (definiert in einer const), ie:
Wenn dies einmal in einer Eigenschaft, die es verwendet werden kann, durch Bindung.