コードビハインドでプロパティを 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 とコード ビハインドを別々に管理できます。
ただし、メンテナンスに関しては、内部識別子は次のように 1 か所で定義する必要があります。
//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>
だから、この問題を解決する方法を知りたいです。または、それを実装するためのより良い方法はありますか。それもいいでしょう。
一番、