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,

InformationsquelleAutor Aki24x | 2011-03-16
Schreibe einen Kommentar