2011-01-14 9 views
1

以下のバインディングは、選択した項目を取得して設定します。また、項目を正しく表示します。この場合、部門の名前を表示するだけです。ComboBox SelectedItem表示

ただし、選択した部門名を表示する代わりに、選択した部門のToString()が表示されます。

選択した項目に部門名のみが表示されるように修正するにはどうすればよいですか?

乾杯、
Berryl

<ComboBox 
    Style="{StaticResource ComboBoxStyle}" 
    ItemContainerStyle="{StaticResource ComboBoxItemStyle}" 

    ItemsSource="{Binding Path=Departments}" 
    SelectedItem="{Binding Path=Department, Mode=TwoWay}" 
    IsSynchronizedWithCurrentItem="True" 
    DisplayMemberPath="Name" 
/> 
+0

「の代わりに、選択した部門名を表示し、それは)(選択した部門のToStringを表示します。」uがこの – Binil

+0

の詳細を説明してくださいすることができます投稿してくださいあなたの解決策は適切な答えとして受け入れ、答えは質問に属していません。そうでない場合は外部から回答が必要なように見えます。 –

+0

@ H.B。 - それは「修正」です。もし「適切な」答えが多少足りません。私はDataTemplateをかなり使いたくて、DisplayMemberPathスタイルであきらめました。しかし、それはうまくいかなければなりませんでしたか?あなたはそれがしなかった理由を見ることができますか?乾杯。 – Berryl

答えて

1

.NETフレームワークは、各観察コレクションアイテムにToString()メソッドを呼び出すためです。この問題を解決するために、あなたがこのようなあなたのモデルにToString()メソッドをオーバーライドすることができます

public override string ToString() 
{ 
    return this.Name; 
} 
1

Iは下記のようにするDataTemplateにDisplayMemberPathを変更することによって問題を解決することができました。

DisplayMemberPathがここで動作しない理由はわかりませんが、私のコードには別のバグがあると仮定しなければなりません。古い質問であるため、コードは変更されており、再作成する価値はありません。

私は、このような単純なケースでも、DataTemplatesを日常的に使用しています。

乾杯、
Berryl

<ComboBox.ItemTemplate> 
    <DataTemplate> 
     <TextBlock Text="{Binding Name}" /> 
    </DataTemplate> 
</ComboBox.ItemTemplate> 
関連する問題