Есть ли какой-нибудь хороший способ связать свойство со значением const в codebehind?
Когда я использую 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 и Code-behind могут поддерживаться отдельно.
Однако, с точки зрения обслуживания, внутренний идентификатор должен быть определен в одном месте следующим образом:
//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>
Итак, я хочу знать, как решить эту проблему.Или есть ли лучший способ реализовать это.Было бы тоже неплохо.
Best,