Связывание константного члена в коде позади от xaml в WPF

Есть ли хороший способ привязать свойство к значению const в выделенном коде?

Когда я использую ComboBox, я обычно делаю это в xaml и коде:

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;
}

Я выбрал этот способ по следующей причине:

  • Для целей локализации Content Строка не должна использоваться для определения того, какой элемент выбран во время сохранения и загрузки последнего выбранного элемента.
  • Для простоты XAML и код программной части должны быть связаны с внутренним идентификатором (в данном случае, Uid). Так что, XAML и код программной части могут поддерживаться отдельно.

Однако с точки зрения обслуживания внутренний идентификатор должен быть определен в одном месте следующим образом:

//IDs
public const string ID_foo = "foo";
public const string ID_bar = "bar";

...

//
switch (item.Uid)
{
    case ID_foo:  ... break;
    case ID_bar:  ... break;
}

Проблема в том, что свойство не может быть константным значением, поэтому нет способа привязать ID_foo и ID_bar к Uid ComboBoxItem, как это :

//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>

Итак, я хочу знать, как решить эту проблему. Или есть лучший способ реализовать это. Было бы тоже неплохо.

Лучшее,

9
задан Aki24x 16 March 2011 в 22:20
поделиться