注意:我正在使用MVVM Light Toolkit和MahApps.Metro。使用WPF和MVVM動態創建行和列
我已經檢查了答案,但它似乎沒有任何與我的問題有關。
我有一個網格,其列和標題應動態創建。列的數量和值未知,查看行數未知。
行中的行和數據表示數據庫表。所有數據都存在於ViewModel中。我的ViewModel中有一個ObservableCollection<ServerRow> ServerRows;
。
服務器行對象是一個模型,它看起來像這樣:
public class ServerRow : ObservableObject
{
private ObservableCollection<ServerColumn> _columns;
public ObservableCollection<ServerColumn> Columns
{
get { return _columns; }
set { Set(() => Columns, ref _columns, value); }
}
}
這是一個ServerColumn
類:
public class ServerColumn : ObservableObject
{
private string _name;
private string _type;
private string _value;
public string Name
{
get { return _name; }
set { Set(() => Name, ref _name, value); }
}
public string Type
{
get { return _type; }
set { Set(() => Type, ref _type, value); }
}
public string Value
{
get { return _value; }
set { Set(() => Value, ref _value, value); }
}
}
當時的想法是綁定的DataGrid到ObservableCollection<ServerRow> ServerRows;
,然後生成列依賴在具有ServerColumns
的ServerRow
對象中,該對象又具有Name
(應該是列的標題),Type
作爲列數據的數據類型,並且Value
作爲應在每行/列中表示的值。
我的XAML是非常簡單(因爲它不是完整的,和課程 - 的不工作)
<DataGrid AutoGenerateColumns="True" ItemsSource="{Binding ServerRows}"/>
所以這就是爲什麼這個問題就在這裏。 如何正確編寫XAML以實現我想要做的事情?另外,我可能會設計一些東西 - 但我仍然是WPF/MVVM中的初學者,對我來說如此光禿禿的。 :/
這是結果,這很有意義,因爲網格試圖顯示單個列內的對象集合並調用其方法ToString()
。
您期望輸出什麼,即您想要爲每個ServerRow顯示多少列?這些列在哪裏定義? – mm8