diff --git a/SmartAquaViewer/App.xaml b/SmartAquaViewer/App.xaml
index af590e0..a067e94 100644
--- a/SmartAquaViewer/App.xaml
+++ b/SmartAquaViewer/App.xaml
@@ -2,13 +2,29 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SmartAquaViewer"
+ xmlns:view="clr-namespace:SmartAquaViewer.View"
+ xmlns:vm="clr-namespace:SmartAquaViewer.ViewModel"
StartupUri="MainWindow.xaml">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SmartAquaViewer/MainWindow.xaml b/SmartAquaViewer/MainWindow.xaml
index ed8fa39..d37aa6d 100644
--- a/SmartAquaViewer/MainWindow.xaml
+++ b/SmartAquaViewer/MainWindow.xaml
@@ -6,25 +6,48 @@
xmlns:local="clr-namespace:SmartAquaViewer"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:view="clr-namespace:SmartAquaViewer.View"
+ xmlns:vm="clr-namespace:SmartAquaViewer.ViewModel"
mc:Ignorable="d"
Title="MainWindow" Height="1080" Width="1920" WindowStartupLocation="CenterScreen">
+
+
+
+
+
-
+
-
+
-
-
+
+
+
+
+
+
+
-
+
diff --git a/SmartAquaViewer/Reources/Generic.xaml b/SmartAquaViewer/Reources/Generic.xaml
new file mode 100644
index 0000000..b35ade7
--- /dev/null
+++ b/SmartAquaViewer/Reources/Generic.xaml
@@ -0,0 +1,30 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/SmartAquaViewer/Reources/Images/ListImage.png b/SmartAquaViewer/Reources/Images/ListImage.png
new file mode 100644
index 0000000..648d86c
Binary files /dev/null and b/SmartAquaViewer/Reources/Images/ListImage.png differ
diff --git a/SmartAquaViewer/SmartAquaViewer.csproj b/SmartAquaViewer/SmartAquaViewer.csproj
index fc386e0..63f8823 100644
--- a/SmartAquaViewer/SmartAquaViewer.csproj
+++ b/SmartAquaViewer/SmartAquaViewer.csproj
@@ -9,9 +9,17 @@
AnyCPU;x64
+
+
+
+
+
+
+
+
diff --git a/SmartAquaViewer/View/CCTVView.xaml b/SmartAquaViewer/View/CCTVView.xaml
new file mode 100644
index 0000000..269d9c1
--- /dev/null
+++ b/SmartAquaViewer/View/CCTVView.xaml
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/SmartAquaViewer/View/CCTVView.xaml.cs b/SmartAquaViewer/View/CCTVView.xaml.cs
new file mode 100644
index 0000000..fccdc06
--- /dev/null
+++ b/SmartAquaViewer/View/CCTVView.xaml.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace SmartAquaViewer.View
+{
+ ///
+ /// CCTVView.xaml에 대한 상호 작용 논리
+ ///
+ public partial class CCTVView : UserControl
+ {
+ public CCTVView()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/SmartAquaViewer/View/EnegyView.xaml b/SmartAquaViewer/View/EnegyView.xaml
new file mode 100644
index 0000000..3c3af99
--- /dev/null
+++ b/SmartAquaViewer/View/EnegyView.xaml
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/SmartAquaViewer/View/EnegyView.xaml.cs b/SmartAquaViewer/View/EnegyView.xaml.cs
new file mode 100644
index 0000000..4da873d
--- /dev/null
+++ b/SmartAquaViewer/View/EnegyView.xaml.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace SmartAquaViewer.View
+{
+ ///
+ /// EnegyView.xaml에 대한 상호 작용 논리
+ ///
+ public partial class EnegyView : UserControl
+ {
+ public EnegyView()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/SmartAquaViewer/View/FileListView.xaml b/SmartAquaViewer/View/FileListView.xaml
index 0cb149c..4dce29a 100644
--- a/SmartAquaViewer/View/FileListView.xaml
+++ b/SmartAquaViewer/View/FileListView.xaml
@@ -7,32 +7,48 @@
xmlns:vm="clr-namespace:SmartAquaViewer.ViewModel"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
mc:Ignorable="d"
- d:DesignHeight="1080" d:DesignWidth="300">
+ d:DesignHeight="1040" d:DesignWidth="270">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SmartAquaViewer/View/GreenHouseView.xaml b/SmartAquaViewer/View/GreenHouseView.xaml
new file mode 100644
index 0000000..3e98376
--- /dev/null
+++ b/SmartAquaViewer/View/GreenHouseView.xaml
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/SmartAquaViewer/View/GreenHouseView.xaml.cs b/SmartAquaViewer/View/GreenHouseView.xaml.cs
new file mode 100644
index 0000000..8f558eb
--- /dev/null
+++ b/SmartAquaViewer/View/GreenHouseView.xaml.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace SmartAquaViewer.View
+{
+ ///
+ /// GreenHouseView.xaml에 대한 상호 작용 논리
+ ///
+ public partial class GreenHouseView : UserControl
+ {
+ public GreenHouseView()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/SmartAquaViewer/View/MonitoringView.xaml b/SmartAquaViewer/View/MonitoringView.xaml
new file mode 100644
index 0000000..52e27e7
--- /dev/null
+++ b/SmartAquaViewer/View/MonitoringView.xaml
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/SmartAquaViewer/View/MonitoringView.xaml.cs b/SmartAquaViewer/View/MonitoringView.xaml.cs
new file mode 100644
index 0000000..d63f58e
--- /dev/null
+++ b/SmartAquaViewer/View/MonitoringView.xaml.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace SmartAquaViewer.View
+{
+ ///
+ /// MonitoringView.xaml에 대한 상호 작용 논리
+ ///
+ public partial class MonitoringView : UserControl
+ {
+ public MonitoringView()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/SmartAquaViewer/ViewModel/CCTVViewModel.cs b/SmartAquaViewer/ViewModel/CCTVViewModel.cs
new file mode 100644
index 0000000..607e8f1
--- /dev/null
+++ b/SmartAquaViewer/ViewModel/CCTVViewModel.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SmartAquaViewer.ViewModel
+{
+ public class CCTVViewModel : INotifyPropertyChanged
+ {
+ public CCTVViewModel()
+ {
+
+ }
+
+ public event PropertyChangedEventHandler? PropertyChanged;
+ private void OnPropertyChanged([CallerMemberName] string? name = null)
+ => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
+ }
+}
diff --git a/SmartAquaViewer/ViewModel/EnergyViewModel.cs b/SmartAquaViewer/ViewModel/EnergyViewModel.cs
new file mode 100644
index 0000000..3ac2e56
--- /dev/null
+++ b/SmartAquaViewer/ViewModel/EnergyViewModel.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SmartAquaViewer.ViewModel
+{
+ public class EnergyViewModel : INotifyPropertyChanged
+ {
+ public EnergyViewModel() { }
+
+ public event PropertyChangedEventHandler? PropertyChanged;
+ private void OnPropertyChanged([CallerMemberName] string? name = null)
+ => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
+ }
+}
diff --git a/SmartAquaViewer/ViewModel/GreenHouseGasViewModel.cs b/SmartAquaViewer/ViewModel/GreenHouseGasViewModel.cs
new file mode 100644
index 0000000..8b25718
--- /dev/null
+++ b/SmartAquaViewer/ViewModel/GreenHouseGasViewModel.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SmartAquaViewer.ViewModel
+{
+ public class GreenHouseGasViewModel : INotifyPropertyChanged
+ {
+ public GreenHouseGasViewModel()
+ {
+ // Initialization logic for GreenHouseGasViewModel can go here
+ }
+
+ public event PropertyChangedEventHandler? PropertyChanged;
+ private void OnPropertyChanged([CallerMemberName] string? name = null)
+ => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
+ }
+}
diff --git a/SmartAquaViewer/ViewModel/MainViewModel.cs b/SmartAquaViewer/ViewModel/MainViewModel.cs
new file mode 100644
index 0000000..1532240
--- /dev/null
+++ b/SmartAquaViewer/ViewModel/MainViewModel.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Input;
+using SmartAquaViewer.Controls;
+
+namespace SmartAquaViewer.ViewModel
+{
+ public class MainViewModel : INotifyPropertyChanged
+ {
+ private object? _selectedViewModel;
+ public object? SelectedViewModel
+ {
+ get => _selectedViewModel;
+ set
+ {
+ if (_selectedViewModel != value)
+ {
+ _selectedViewModel = value;
+ OnPropertyChanged(nameof(SelectedViewModel));
+ }
+ }
+ }
+
+ public ICommand SwapViewCommand { get; }
+
+ public MainViewModel()
+ {
+ SwapViewCommand = new RelayCommand(SwapView);
+
+ SelectedViewModel = new MonitoringViewModel(); // Default view
+ }
+
+ private void SwapView(object obj)
+ {
+ var tag = (string)obj;
+
+ switch (tag)
+ {
+ case "monitoring":
+ SelectedViewModel = new MonitoringViewModel();
+ break;
+ case "energy":
+ SelectedViewModel = new EnergyViewModel();
+ break;
+ case "greenHouseGas":
+ SelectedViewModel = new GreenHouseGasViewModel();
+ break;
+ case "cctv":
+ SelectedViewModel = new CCTVViewModel();
+ break;
+ default:
+ throw new ArgumentException("Unknown view tag", nameof(obj));
+ }
+ }
+
+ public event PropertyChangedEventHandler? PropertyChanged;
+ private void OnPropertyChanged([CallerMemberName] string? name = null)
+ => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
+ }
+}
diff --git a/SmartAquaViewer/ViewModel/MonitoringViewModel.cs b/SmartAquaViewer/ViewModel/MonitoringViewModel.cs
new file mode 100644
index 0000000..af32925
--- /dev/null
+++ b/SmartAquaViewer/ViewModel/MonitoringViewModel.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SmartAquaViewer.ViewModel
+{
+ public class MonitoringViewModel : INotifyPropertyChanged
+ {
+ public MonitoringViewModel()
+ {
+ // Initialization logic for MonitoringViewModel can go here
+ }
+
+ public event PropertyChangedEventHandler? PropertyChanged;
+ private void OnPropertyChanged([CallerMemberName] string? name = null)
+ => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
+ }
+}