我剛剛在WPF中找到了另一個綁定的奇怪點。考慮下面的類及其IStupid
類型的屬性稱爲MyStupid
:綁定到接口類型的屬性
public struct DumbClass
{
public IStupid MyStupid { get { return new IsStupid(); } }
}
public interface IStupid{}
public class IsStupid : IStupid{}
現在考慮下面結合一個ListBox
:
var items = new List<DumbClass>(new []{new DumbClass(), new DumbClass(), new DumbClass()});
OptListBox.ItemsSource = items;
沒有什麼特別之處XAML:
<ListBox Name="OptOccurances" Height="238" HorizontalAlignment="Left" Margin="130,34,0,0" VerticalAlignment="Top" Width="229" >
</ListBox>
正如所料,列表框的輸出是3行「MyProject.DumbClass」。
但是,如果我設置DisplayMemberPath="MyStupid"
(或者創建一個ItemTemplate,將'MyStupid'直接綁定到模板中的TextBlock),我會得到3個空行,而我期望它會說MyProject.IsStupid
。爲什麼數據綁定引擎無法調用默認的ToString()
實現並顯示類名稱。是否有接口類型屬性的解決方法?至少,沒有綁定錯誤引發的原因嗎?
對於除foo/bar之外的其他內容+1。 – 2013-04-30 22:30:23
一個名爲'DumbClass'的結構是真的愚蠢,因爲它甚至沒有意識到它不是一個類。 – Dan 2013-04-30 22:31:45
綁定錯誤永遠不會「拋出」。你可以在Visual Studio的輸出窗口看到任何綁定錯誤,你有什麼? – 2013-04-30 22:44:05