2012-11-21 63 views
1

我有一個自定義集合,它擴展了ObservableCollection並重寫了ToString()。 如果我這個集合綁定到一個TextBox的Text屬性,像這樣:將TextBox.Text綁定到自定義集合不顯示自定義ToString()

<TextBox IsReadOnly="True" Text="{Binding Satellites, Mode=OneTime}"/> 

其中衛星將這個自定義集合的一個實例,在文本框中顯示(Collection)而不是調用我的ToString自定義實現()。

這是預期的行爲?

+0

我編輯了自己的冠軍。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

1

該屬性可能綁定到CollectionView而不是直接綁定到集合。

嘗試添加屬性集合類的文本返回顯示:

public string DisplayText 
{ 
    get { return ToString(); } 
} 

,然後綁定到該屬性:

<TextBox IsReadOnly="True" Text="{Binding Satellites.DisplayText, Mode=OneTime}"/> 
+0

這很有道理,謝謝。 –

0

也許WPF查看綁定對象的類型,當它看到一個IEnumerable時,它不會調用ToString()。

但我認爲你可以通過使用轉換器達到相同的結果(假設你只想綁定一次該集合)。看看IValueConverter