コードビハインドのconst値にプロパティをバインドする良い方法はありますか?WPFのxamlのコードの後ろにconstメンバーをバインドする
私はコンボボックスを使用すると、私は通常の背後にある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;
}
私はこの方法を選んだ理由はあります以下:
- ocalization目的、最後に選択された項目を保存して読み込む際に選択された項目を決定するためにコンテンツ文字列を使用すべきではありません。
- 簡潔にするため、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をバインドする方法はありませんし、このようなComboBoxItemのUIDにID_bar:だから
//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>
は、私はこの問題を解決する方法を知りたいです。 または、それを実装するより良い方法がありますか?それもいいですね。つまり、あなたが(定数で定義された)定数を返すプロパティを作成する必要があり
ありがとう!これはまさに私が望んでいたものです!また、リークやオーバーヘッドに関連する情報は本当に便利です。 – Aki24x