猜猜我知道如何做到這一點,但它是非常複雜的東西。首先你應該理解MVVM的基本概念。 主視圖模型應該是ViewModels的ObservableCollection
的類,它們中的每一個表示具有其數據和屬性的列。
interface IViewModel : INotifyPropertyChanged,IDisposable
{
}
interface IColumnViewModel : IViewModel
{
}
class ViewModelBase : IViewModel
{
// ... MVVM basics, PropertyChanged etc. ...
}
class MainViewModel : ViewModelBase
{
ObservableCollection<IColumnViewModel> Columns {get; set}
}
在查看我想是這樣ItemsControl
與ItemTemplate
,應與DataTemplate
嵌入ContentControl
,即應當由WPF根據列表項的綁定DataContext
自動選擇。StackPanel
本身不適合一點,但它可以被調用爲ItemsPanelTemplate
<Window
xmlns:v="clr-namespace:WpfApplication.Views"
xmlns:vm="clr-namespace:WpfApplication.ViewModels">
<Window.Resources>
<DataTemplate DataType="{x:Type TypeName=vm:TextColumnViewModel}">
<v:TextColumnView/>
</DataTemplate>
</Window.Resources>
<ItemsControl
ItemsSource="{Binding Columns}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl Content="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Window>
所以,你應該建立視圖/視圖模型對每列類型。
希望,我的例子會有所幫助。祝你好運與你的女朋友和MVVM :)
XAML不是MVVM。和WPF!= MVVM。 WPF是MVVM的好朋友,XAML只是UI標記。 XAML-view不僅僅是XAML--它已經粘住了類(所謂的Code-Behind),但是你不應該將它用於主邏輯,儘可能少地使用它。 當然,您可以在代碼隱藏中實現控件生成,但這絕對不是MVVM **方法。 – oxfn
@ user1590636你生成的GUI看起來非常漂亮,簡單 – WiiMaxx
你讓你的女朋友嫁給你了嗎? – Purusartha