짐작 나는 그것을 달성하는 방법을 알고 있지만 매우 복잡한 것입니다. 먼저 MVVM 기본 개념을 이해해야합니다. 기본 ViewModel은 ObservableCollection
의 ViewModels 클래스 여야하며 각 뷰는 해당 데이터와 속성이있는 열을 나타냅니다. 보기에서
interface IViewModel : INotifyPropertyChanged,IDisposable
{
}
interface IColumnViewModel : IViewModel
{
}
class ViewModelBase : IViewModel
{
// ... MVVM basics, PropertyChanged etc. ...
}
class MainViewModel : ViewModelBase
{
ObservableCollection<IColumnViewModel> Columns {get; set}
}
나는 자동으로 목록 항목의 바인더 제본 DataContext
에 따라 WPF에 의해 선택되어야한다 DataTemplate
와 ContentControl
을 포함한다 ItemTemplate
와 ItemsControl
같은 것을, 가정합니다.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 만 아니며 클래스 (코드 비하인드)를 붙 였지만 주 논리로 사용하면 안되므로 가능한 한 적게 사용하십시오. 물론 코드 숨김으로 컨트롤 생성을 구현할 수도 있지만 이는 ** 절대적으로 MVVM ** 접근 방식이 아닙니다. – oxfn
@ user1590636 생성 된 GUI가 정말 멋지고 단순 해 보입니다. – WiiMaxx
여자 친구와 결혼하게하셨습니까? – Purusartha