Bonjour
Le sujet a première vu a l'air bête.
Tout en gardant le model MVVM pour mon application j'aimerai pouvoir fermer un fenêtre.
La difficulté: aucun code behind contrairement à l'exemple ci-dessous
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); MainWindow window = new MainWindow(); var viewModel = new MainWindowViewModel(); viewModel.RequestClose += window.Close; window.DataContext = viewModel; window.Show(); }
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
29
30
31
32
33 public class MainWindowViewModel : ViewModelBase { RelayCommand _closeCommand; public ICommand CloseCommand { get { if (_closeCommand == null) { _closeCommand = new RelayCommand( param => Close(), param => CanClose() ); } return _closeCommand; } } public event Action RequestClose; public virtual void Close() { if ( RequestClose!=null ) { RequestClose(); } } public virtual bool CanClose() { return true; } }
Est-ce faisable ?
(ps: contrairement a l'exemple ci-dessus, mon DataContext est définit dans le code XAML)
Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <Window.DataContext> <core:viewModel /> </Window.DataContext>
Merci
Partager