Bonjour,
voilà j'ai 2 vues/vueModel qui affichent mes infos pour types d'objet :
par exemple
Mon objet "Client" (ClientView/ClientViewModel) qui affiche le nom du client et ses coordonnées...
Mon objet (OperationView/OperationViewModel)"Operation" qui affiche le nom de l'opération, la date...
Maintenant, j'aimerai avoir un TabControl où je peux afficher ma vue "Client" dans un onglet et ma vue "Opération" dans un autre...
Comment dois je proceder ? j'ai ma Vue TabControl et un TabBarViewModel
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 class TabBarViewModel : ViewModelBase { private readonly ObservableCollection<ViewModelBase> _tabs; private readonly ICollectionView _collectionView; public TabBarViewModel() { this._tabs = new ObservableCollection<ViewModelBase>(); this._collectionView = CollectionViewSource.GetDefaultView(this._tabs); this._collectionView.CurrentChanged += new EventHandler(_collectionView_CurrentChanged); } void _collectionView_CurrentChanged(object sender, EventArgs e) { RaisePropertyChanged("SelectedTab"); } public ObservableCollection<ViewModelBase> Tabs { get { return this._tabs; } } public ViewModelBase SelectedTab { get { return this._collectionView.CurrentItem as ViewModelBase; } }
et dans mon xaml je mets :
Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <TabControl DockPanel.Dock="Bottom" x:Name="tabbar" ItemsSource="{Binding Tabs}" IsSynchronizedWithCurrentItem="True" > </TabControl>
j'ai également un méthode "AddTab" qui m'ajoute un onglet : ce qui fonctionne tres bien (pour tester j'ai fait un this._tabs.add(new testViewModel()))
Mais maintenant... pour mes 2 objets, je fais quoi ? je suis un peu coincé là... est ce faire une "TabViewModel" avec en attribut un "ViewModelBase" est une bonne idée ? (que j'initialiserai soit avec "ClientViewModel" soit avec "OperationViewModel").. mais après à l'affichage, comment faire pour afficher la bonne vue ?
merci de votre aide
Partager