有没有什么好方法可以将属性绑定到代码隐藏中的 const 值?
当我使用 ComboBox 时,我通常在 xaml 和后面的代码中这样做:
XAML:
<ComboBox Name="cbBuz">
<ComboBoxItem Content="foo" Uid="foo" IsSelected="true" />
<ComboBoxItem Content="bar" Uid="bar" />
</ComboBox>
代码隐藏:
ComboBoxItem item = cbBuz.GetSelectedItem();
switch (item.Uid)
{
case "foo": ... break;
case "bar": ... break;
}
我选择这种方式的原因如下:
- 出于本地化目的,不应使用内容字符串来确定在保存和加载最后选择的项目期间选择了哪个项目。
- 为简单起见,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;
}
问题似乎属性不能是 const 值,因此无法像这样将 ID_foo 和 ID_bar 绑定到 ComboBoxItem 的 Uid:
//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>
所以,我想知道如何解决这个问题。或者,有没有更好的方法来实现它。也会很好。
最好的,