我正在開發一個WPF 4.0應用程序,我需要製作一個包含具有文本框或下拉列的列的網格,具體取決於行。例如:WPF DataGrid單列內的不同編輯控件
| Name | Value | Help |
| PROP1A | [textbox] | Description of prop1a |
| Prop2A | [dropdown v] | Description of prop2a |
| Prop3A | [textbox] [x checkbox] | Description of prop2a |
| Prop4A | [dropdown v] | Description of prop2a |
| etc...
的想法是,用戶具有他們需要輸入值的表,我們爲每個值顯示名稱和描述一起。其中一些值是需要用文本框輸入的數字,而另一些則是文本框加上覆選框,還有一些是下拉菜單。
我最初的想法是將這個基本上實現爲我將稱爲RowDescriptor
的一個集合,它將指定名稱,輸入類型和幫助信息(它只是文本),然後使用綁定將集合綁定到DataGrid。基本上,這些將充當ViewModels,並且在DataGrid中設置值將通過ViewModel流向實際Model(就像MVVM應用程序的典型情況一樣)。
當我瀏覽我已有的文檔時,我找不到任何討論以這種方式動態更改列類型的方法。我現在傾向於使用網格,並手動佈置輸入(仍然使用綁定,但單獨綁定每個元素)。儘管如此,這還是需要更多的人工努力,所以我想知道是否有一種相對直接的方式來實現我的第一個想法。看起來我應該可以用DataGridTemplateColumn做些事情,但我對WPF來說比較新,我不確定我會如何去做這件事。
這基本上是一個Cory Larson的方法的WPF版本,在那裏你有行中的所有類型,然後顯示或隱藏適當的類型,對不對? (不同的是,在你的例子中,這是通過綁定完成的,對嗎?) – notJim 2010-07-19 01:30:15
我沒有機會看他的代碼。這在我心中是新鮮的,因爲我不到一週前就知道如何去做。 – 2010-07-19 06:30:00