2010-05-20 38 views
21

有趣的是,有時候簡單的東西有時候會咬我。WPF:將DataGrid綁定到列表<String>

我可以很好地綁定一個DataGrid一些任意類的集合,使用DataGridTextColumn這樣的:

// bound to List<Class> 
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/> 

現在我想一個DataGrid綁定到字符串的簡單集合。所以,因爲沒有綁定到屬性「名稱」或類似的東西,我怎麼寫綁定:

// bound to List<String> 
<DataGridTextColumn Header="Name" Binding="{Binding ???}"/> 

字符串沒有財產「價值」或類似的東西。如果我只寫{綁定},我將以單向綁定結束,無法將更改寫回集合。

考慮一下,我認爲它不可能綁定到一個集合,所以我確實需要將我的字符串包裝到一個類中?
或者有沒有辦法?

回答

30

你可以把它下面的結合運行:

Binding="{Binding Path=.} 

,但它不會解決你的問題,因爲字符串被引用類型是不可變的,這意味着你不能改變你已經綁定到用戶的字符串引用接口。

因此,您的想法是正確的,您需要將這些字符串包裝在對象中,使用Binding的路徑屬性並將這些對象提供給您的DataGrid。

public class StringWrapper 
{ 
    public string Value { get; set; } 
} 
+0

但爲什麼包裝工作?我們仍然綁定到一個字符串? – 2016-03-18 10:21:12

+0

否..您綁定到包含字符串的對象。那就是差異 – Arcturus 2016-03-18 11:34:00

+2

我現在明白了。綁定不能改變綁定的引用。它只能改變屬性。現在有道理。 非常感謝。 – 2016-03-18 12:16:46