2011-01-14 171 views
1

下面的綁定獲取並設置選定的項目。它也正確顯示項目,在這種情況下,這意味着顯示部門的名稱。組合框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 2011-01-14 06:42:50

回答

1

這是因爲Net框架調用每個觀察的集合項目ToString()方法。爲了解決這個問題,你可以在你的型號覆蓋ToString()方法是這樣的:

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

我能夠通過如下所示改變的DisplayMemberPath到一個DataTemplate來解決這個問題。

儘管我不確定爲什麼DisplayMemberPath在這裏不起作用,但我必須假設我的代碼中有一些其他錯誤。作爲一個老問題,代碼已經改變,不值得重新創建。另外,我現在經常使用DataTemplates,即使是像這樣的簡單情況。

乾杯,
Berryl

<ComboBox.ItemTemplate> 
    <DataTemplate> 
     <TextBlock Text="{Binding Name}" /> 
    </DataTemplate> 
</ComboBox.ItemTemplate>