main
syneffort 1 year ago
parent a69fe4cc12
commit 75410991fe
  1. 25
      MVVMwithWPF/MVVMwithWPF.sln
  2. 7
      MVVMwithWPF/MVVMwithWPF/App.xaml
  3. 34
      MVVMwithWPF/MVVMwithWPF/App.xaml.cs
  4. 10
      MVVMwithWPF/MVVMwithWPF/AssemblyInfo.cs
  5. 17
      MVVMwithWPF/MVVMwithWPF/MVVMwithWPF.csproj
  6. 16
      MVVMwithWPF/MVVMwithWPF/ViewModels/MainViewModel.cs
  7. 19
      MVVMwithWPF/MVVMwithWPF/ViewModels/ViewModelBase.cs
  8. 25
      MVVMwithWPF/MVVMwithWPF/Views/MainWindow.xaml
  9. 26
      MVVMwithWPF/MVVMwithWPF/Views/MainWindow.xaml.cs

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.9.34728.123
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MVVMwithWPF", "MVVMwithWPF\MVVMwithWPF.csproj", "{1B007594-A562-441E-B578-35010828A703}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1B007594-A562-441E-B578-35010828A703}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1B007594-A562-441E-B578-35010828A703}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1B007594-A562-441E-B578-35010828A703}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1B007594-A562-441E-B578-35010828A703}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E072CF8D-B4E4-4A51-8552-A3B1FE29A801}
EndGlobalSection
EndGlobal

@ -0,0 +1,7 @@
<Application x:Class="MVVMwithWPF.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MVVMwithWPF"
StartupUri="/Views/MainWindow.xaml">
<Application.Resources />
</Application>

@ -0,0 +1,34 @@
using Microsoft.Extensions.DependencyInjection;
using MVVMwithWPF.ViewModels;
using System.Configuration;
using System.Data;
using System.Windows;
namespace MVVMwithWPF
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
public new static App Current => (App)Application.Current;
public IServiceProvider Service { get; }
public App()
{
Service = ConfigureServices();
this.InitializeComponent();
}
private static IServiceProvider ConfigureServices()
{
var services = new ServiceCollection();
services.AddTransient(typeof(MainViewModel));
return services.BuildServiceProvider();
}
}
}

@ -0,0 +1,10 @@
using System.Windows;
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]

@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.77" />
</ItemGroup>
</Project>

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MVVMwithWPF.ViewModels
{
internal class MainViewModel : ViewModelBase
{
public MainViewModel()
{
Title = "Main View";
}
}
}

@ -0,0 +1,19 @@
using CommunityToolkit.Mvvm.ComponentModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MVVMwithWPF.ViewModels
{
internal abstract class ViewModelBase : ObservableObject
{
private string _title;
public string Title
{
get => _title;
set => SetProperty(ref _title, value);
}
}
}

@ -0,0 +1,25 @@
<Window x:Class="MVVMwithWPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:MVVMwithWPF"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewModels="clr-namespace:MVVMwithWPF.ViewModels"
Title="{Binding Title}"
Width="800"
Height="450"
d:DataContext="{d:DesignInstance Type=viewModels:MainViewModel,
IsDesignTimeCreatable=True}"
mc:Ignorable="d">
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="_File">
<MenuItem Header="_New" />
<MenuItem Header="_Open" />
<MenuItem Header="_Save" />
<Separator />
<MenuItem Header="_Exit" />
</MenuItem>
</Menu>
</DockPanel>
</Window>

@ -0,0 +1,26 @@
using MVVMwithWPF.ViewModels;
using System.Text;
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 MVVMwithWPF
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = App.Current.Service.GetService(typeof(MainViewModel));
}
}
}
Loading…
Cancel
Save