Ruben 2 лет назад
Родитель
Сommit
54bd690a33
26 измененных файлов с 273 добавлено и 20 удалено
  1. 1 0
      src/PicView.Avalonia.Win32/App.axaml
  2. 6 0
      src/PicView.Avalonia.Win32/PicView.Avalonia.Win32.csproj
  3. 13 5
      src/PicView.Avalonia.Win32/Views/MainWindow.axaml
  4. 140 0
      src/PicView.Avalonia.Win32/Views/TitleBar.axaml
  5. 13 0
      src/PicView.Avalonia.Win32/Views/TitleBar.axaml.cs
  6. BIN
      src/PicView.Avalonia.Win32/icon.ico
  7. BIN
      src/PicView.Avalonia/Assets/Fonts/Roboto-Black.ttf
  8. BIN
      src/PicView.Avalonia/Assets/Fonts/Roboto-Bold.ttf
  9. BIN
      src/PicView.Avalonia/Assets/Fonts/Roboto-Italic.ttf
  10. BIN
      src/PicView.Avalonia/Assets/Fonts/Roboto-Light.ttf
  11. BIN
      src/PicView.Avalonia/Assets/Fonts/Roboto-LightItalic.ttf
  12. BIN
      src/PicView.Avalonia/Assets/Fonts/Roboto-Medium.ttf
  13. BIN
      src/PicView.Avalonia/Assets/Fonts/Roboto-MediumItalic.ttf
  14. BIN
      src/PicView.Avalonia/Assets/Fonts/Roboto-Regular.ttf
  15. BIN
      src/PicView.Avalonia/Assets/Fonts/Roboto-Thin.ttf
  16. BIN
      src/PicView.Avalonia/Assets/Fonts/Roboto-ThinItalic.ttf
  17. BIN
      src/PicView.Avalonia/Assets/Fonts/texgyreheros-bold.otf
  18. BIN
      src/PicView.Avalonia/Assets/Fonts/texgyreheros-italic.otf
  19. BIN
      src/PicView.Avalonia/Assets/Fonts/texgyreheros-regular.otf
  20. BIN
      src/PicView.Avalonia/Assets/avalonia-logo.ico
  21. BIN
      src/PicView.Avalonia/Assets/icon.ico
  22. BIN
      src/PicView.Avalonia/Assets/icon.png
  23. 38 0
      src/PicView.Avalonia/PicView.Avalonia.csproj
  24. 39 0
      src/PicView.Avalonia/Themes/Dark/DarkTheme.axaml
  25. BIN
      src/PicView.Avalonia/Themes/Dark/noisy-texture-200x200-o4-d31-c-161616-t0.png
  26. 23 15
      src/PicView.Avalonia/Views/MainView.axaml

+ 1 - 0
src/PicView.Avalonia.Win32/App.axaml

@@ -7,5 +7,6 @@
 
     <Application.Styles>
         <SimpleTheme />
+        <StyleInclude Source="avares://PicView.Avalonia/Themes/Dark/DarkTheme.axaml" />
     </Application.Styles>
 </Application>

+ 6 - 0
src/PicView.Avalonia.Win32/PicView.Avalonia.Win32.csproj

@@ -7,7 +7,13 @@
     <Nullable>enable</Nullable>
     <BuiltInComInteropSupport>true</BuiltInComInteropSupport>
     <ApplicationManifest>app.manifest</ApplicationManifest>
+    <ApplicationIcon>icon.ico</ApplicationIcon>
   </PropertyGroup>
+  <ItemGroup>
+    <Content Include="icon.ico">
+      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
 
   <ItemGroup>
     <PackageReference Include="Avalonia.Desktop" Version="11.0.6" />

+ 13 - 5
src/PicView.Avalonia.Win32/Views/MainWindow.axaml

@@ -4,13 +4,21 @@
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-    xmlns:views="clr-namespace:PicView.Avalonia.Views"
-    xmlns:views1="clr-namespace:PicView.Avalonia.Win32.Views"
-    xmlns:views2="clr-namespace:PicView.Avalonia.Views;assembly=PicView.Avalonia"
-    xmlns:vm="using:PicView.Avalonia.ViewModels"
+    xmlns:views="clr-namespace:PicView.Avalonia.Views;assembly=PicView.Avalonia"
+    xmlns:win32="clr-namespace:PicView.Avalonia.Win32"
     Title="PicView.Avalonia"
+    MinWidth="400"
     d:DesignHeight="450"
     d:DesignWidth="800"
+    Background="Transparent"
+    ExtendClientAreaChromeHints="NoChrome"
+    ExtendClientAreaTitleBarHeightHint="32"
+    ExtendClientAreaToDecorationsHint="True"
     mc:Ignorable="d">
-    <views2:MainView />
+    <Border BorderBrush="{StaticResource MainBorderColor}" BorderThickness="1">
+        <DockPanel Background="{StaticResource NoisyTexture}">
+            <win32:TitleBar x:Name="TitleBar" DockPanel.Dock="Top" />
+            <views:MainView />
+        </DockPanel>
+    </Border>
 </Window>

+ 140 - 0
src/PicView.Avalonia.Win32/Views/TitleBar.axaml

@@ -0,0 +1,140 @@
+<UserControl
+    x:Class="PicView.Avalonia.Win32.TitleBar"
+    xmlns="https://github.com/avaloniaui"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    Height="32"
+    d:DesignHeight="450"
+    d:DesignWidth="800"
+    mc:Ignorable="d">
+    <Border
+        Background="{StaticResource MainButtonBackgroundColor}"
+        BorderBrush="{StaticResource MainBorderColor}"
+        BorderThickness="0,1,0,1">
+        <DockPanel LastChildFill="True">
+
+            <Border BorderBrush="#FF3A3A3A" BorderThickness="0,0,1,0">
+                <Image
+                    Width="30"
+                    Height="25"
+                    Margin="7,1,7,1"
+                    DockPanel.Dock="Left">
+                    <Image.Source>
+                        <DrawingImage>
+                            <DrawingImage.Drawing>
+                                <DrawingGroup ClipGeometry="M0,0 V329.25937 H333.44974 V0 H0 Z">
+                                    <DrawingGroup>
+                                        <GeometryDrawing Brush="{StaticResource AccentColor}" Geometry="F1 M333.44974,329.25937z M0,0z M329.796,130.208L311.354,177.826 304.172,196.392 286.112,243.011 280.229,258.204C279.6,259.845,277.133,259.397,277.133,257.644L277.133,214.336C277.133,214.143,277.164,213.949,277.236,213.776L289.486,182.156 296.669,163.58 306.194,138.991C306.514,138.176,306.101,137.259,305.265,136.953L278.155,126.723C277.536,126.488,277.123,125.897,277.123,125.245L277.123,109.094C277.123,107.983,278.248,107.219,279.3,107.617L328.888,126.346C311.406,53.8949 245.461,0 166.74,0 121.569,0 80.6197,17.7714 50.5885,46.5785L255.368,46.5785C257.928,46.5785,260.012,48.6267,260.012,51.164L260.012,263.198C260.012,265.725,257.938,267.783,255.368,267.783L40.6298,267.783C38.0705,267.783,35.9858,265.735,35.9858,263.198L35.9858,62.5258C13.4779,90.5891 0,126.05 0,164.63 0,255.555 74.6445,329.259 166.73,329.259 184.625,329.259 201.849,326.447 218.01,321.291L210.972,318.631 203.531,315.819 120.971,284.648 269.971,284.648 269.207,286.594 264.935,297.63C306.452,267.681 333.449,219.279 333.449,164.62 333.47,152.819 332.18,141.315 329.796,130.208L329.796,130.208z" />
+                                        <GeometryDrawing Brush="{StaticResource SecondaryAccentColor}" Geometry="F0 M333.44974,329.25937z M0,0z M62.2502,219.656L73.9737,219.656C80.4857,212.339 86.9666,205.033 93.4579,197.717 95.0265,195.944 96.6261,194.211 98.0709,192.357 98.8862,191.348 99.5054,191.287 100.537,191.99 105.563,195.403 110.63,198.725 115.646,202.19 117.018,203.138 117.689,203.464 118.752,201.629 125.14,190.543 131.725,179.609 138.154,168.543 138.928,167.228 139.403,167.452 140.362,168.135 147.432,173.118 154.532,178.08 161.621,183.053 162.375,183.573 163.149,184.062 163.913,184.582 171.384,169.297 178.784,154.154 186.379,138.625 188.484,142.762 190.425,146.553 192.365,150.343 204.191,173.454 216.018,196.545 227.835,219.656L236.514,219.656C239.083,219.656,241.147,217.597,241.147,215.06L241.147,69.4041C241.147,67.3967 239.847,65.7051 238.031,65.0835 237.556,64.9205 237.05,64.8084 236.524,64.8084L62.2502,64.8084C59.6806,64.8084,57.6166,66.8668,57.6166,69.4041L57.6166,215.06C57.6166,216.15 58.0191,217.149 58.6589,217.933 59.5051,218.973 60.7848,219.656 62.2502,219.656L62.2502,219.656z M105.119,125.969C116.203,126.631 124.583,135.619 124.284,146.654 123.953,159.188 114.16,166.963 103.375,166.739 90.7024,166.474 82.9521,156.773 82.8282,145.992 83.2721,134.039 92.8696,125.245 105.119,125.969L105.119,125.969z" />
+                                    </DrawingGroup>
+                                </DrawingGroup>
+                            </DrawingImage.Drawing>
+                        </DrawingImage>
+                    </Image.Source>
+                </Image>
+            </Border>
+
+            <Button
+                Name="GalleryButton"
+                Width="30"
+                Background="{StaticResource MainButtonBackgroundColor}"
+                BorderBrush="{StaticResource MainBorderColor}"
+                BorderThickness="0,0,1,0"
+                DockPanel.Dock="Left">
+                <Image Width="17">
+                    <DrawingImage>
+                        <DrawingGroup>
+                            <GeometryDrawing Brush="{StaticResource MainIconColor}" Geometry="F1 M22 16L22 4C22 2.9 21.1 2 20 2L8 2C6.9 2 6 2.9 6 4L6 16C6 17.1 6.9 18 8 18L20 18C21.1 18 22 17.1 22 16ZM11 12L13.03 14.71L16 11L20 16L8 16L11 12ZM2 6L2 20C2 21.1 2.9 22 4 22L18 22L18 20L4 20L4 6L2 6Z" />
+                        </DrawingGroup>
+                    </DrawingImage>
+                </Image>
+            </Button>
+
+            <Button
+                Width="30"
+                Margin="0"
+                Background="{StaticResource MainButtonBackgroundColor}"
+                BorderBrush="{StaticResource MainBorderColor}"
+                BorderThickness="0,0,1,0"
+                DockPanel.Dock="Left">
+                <Path
+                    Width="12"
+                    Height="12"
+                    Data="M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"
+                    Fill="{StaticResource MainIconColor}"
+                    Stretch="Fill" />
+            </Button>
+
+            <Button
+                Width="30"
+                Margin="0"
+                Background="{StaticResource MainButtonBackgroundColor}"
+                BorderBrush="{StaticResource MainBorderColor}"
+                BorderThickness="0,0,1,0"
+                DockPanel.Dock="Left">
+                <Path
+                    Width="12"
+                    Height="12"
+                    Data="M192,96v64h248c4.4,0,8,3.6,8,8v240c0,4.4-3.6,8-8,8H136c-4.4,0-8-3.6-8-8v-48c0-4.4,3.6-8,8-8h248V224H192v64L64,192  L192,96z"
+                    Fill="{StaticResource MainIconColor}"
+                    Stretch="Fill" />
+            </Button>
+
+            <Button
+                Width="30"
+                Background="{StaticResource MainButtonBackgroundColor}"
+                BorderBrush="{StaticResource MainBorderColor}"
+                BorderThickness="0,0,1,0"
+                DockPanel.Dock="Right">
+                <Path
+                    Width="12"
+                    Height="12"
+                    Data="M443.6,387.1L312.4,255.4l131.5-130c5.4-5.4,5.4-14.2,0-19.6l-37.4-37.6c-2.6-2.6-6.1-4-9.8-4c-3.7,0-7.2,1.5-9.8,4  L256,197.8L124.9,68.3c-2.6-2.6-6.1-4-9.8-4c-3.7,0-7.2,1.5-9.8,4L68,105.9c-5.4,5.4-5.4,14.2,0,19.6l131.5,130L68.4,387.1  c-2.6,2.6-4.1,6.1-4.1,9.8c0,3.7,1.4,7.2,4.1,9.8l37.4,37.6c2.7,2.7,6.2,4.1,9.8,4.1c3.5,0,7.1-1.3,9.8-4.1L256,313.1l130.7,131.1  c2.7,2.7,6.2,4.1,9.8,4.1c3.5,0,7.1-1.3,9.8-4.1l37.4-37.6c2.6-2.6,4.1-6.1,4.1-9.8C447.7,393.2,446.2,389.7,443.6,387.1z"
+                    Fill="{StaticResource MainIconColor}"
+                    Stretch="Fill" />
+            </Button>
+
+            <Button
+                Name="RestoreButton"
+                Width="30"
+                Background="{StaticResource MainButtonBackgroundColor}"
+                BorderBrush="{StaticResource MainBorderColor}"
+                BorderThickness="0,0,1,0"
+                DockPanel.Dock="Right">
+                <Path
+                    Width="12"
+                    Height="12"
+                    Data="M405.34 405.332H106.66V106.668H240V64H106.66C83.191 64 64 83.197 64 106.668v298.664C64 428.803 83.191 448 106.66 448h298.68c23.469 0 42.66-19.197 42.66-42.668V272h-42.66v133.332zM288 64v42.668h87.474L159.999 322.133l29.866 29.866 215.476-215.47V224H448V64H288z"
+                    Fill="{StaticResource MainIconColor}"
+                    Stretch="Fill" />
+            </Button>
+
+            <Button
+                Width="30"
+                Background="{StaticResource MainButtonBackgroundColor}"
+                BorderBrush="{StaticResource MainBorderColor}"
+                BorderThickness="1,0,1,0"
+                DockPanel.Dock="Right">
+                <Viewbox Width="12" Height="12">
+                    <Path
+                        Data="M24,11c0-0.6-0.4-1-1-1H1c-0.6,0-1,0.4-1,1v2c0,0.6,0.4,1,1,1h22c0.6,0,1-0.4,1-1V11z"
+                        Fill="{StaticResource MainIconColor}"
+                        Stretch="Fill" />
+                </Viewbox>
+            </Button>
+
+            <TextBlock
+                Height="30"
+                Padding="3,7,3,5"
+                VerticalAlignment="Center"
+                Background="{StaticResource SecondaryBackgroundColor}"
+                FontSize="13"
+                FontWeight="Medium"
+                IsTabStop="False"
+                Text="PicView"
+                TextAlignment="Center"
+                TextTrimming="CharacterEllipsis" />
+        </DockPanel>
+    </Border>
+</UserControl>

+ 13 - 0
src/PicView.Avalonia.Win32/Views/TitleBar.axaml.cs

@@ -0,0 +1,13 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace PicView.Avalonia.Win32;
+
+public partial class TitleBar : UserControl
+{
+    public TitleBar()
+    {
+        InitializeComponent();
+    }
+}

BIN
src/PicView.Avalonia.Win32/icon.ico


BIN
src/PicView.Avalonia/Assets/Fonts/Roboto-Black.ttf


BIN
src/PicView.Avalonia/Assets/Fonts/Roboto-Bold.ttf


BIN
src/PicView.Avalonia/Assets/Fonts/Roboto-Italic.ttf


BIN
src/PicView.Avalonia/Assets/Fonts/Roboto-Light.ttf


BIN
src/PicView.Avalonia/Assets/Fonts/Roboto-LightItalic.ttf


BIN
src/PicView.Avalonia/Assets/Fonts/Roboto-Medium.ttf


BIN
src/PicView.Avalonia/Assets/Fonts/Roboto-MediumItalic.ttf


BIN
src/PicView.Avalonia/Assets/Fonts/Roboto-Regular.ttf


BIN
src/PicView.Avalonia/Assets/Fonts/Roboto-Thin.ttf


BIN
src/PicView.Avalonia/Assets/Fonts/Roboto-ThinItalic.ttf


BIN
src/PicView.Avalonia/Assets/Fonts/texgyreheros-bold.otf


BIN
src/PicView.Avalonia/Assets/Fonts/texgyreheros-italic.otf


BIN
src/PicView.Avalonia/Assets/Fonts/texgyreheros-regular.otf


BIN
src/PicView.Avalonia/Assets/avalonia-logo.ico


BIN
src/PicView.Avalonia/Assets/icon.ico


BIN
src/PicView.Avalonia/Assets/icon.png


+ 38 - 0
src/PicView.Avalonia/PicView.Avalonia.csproj

@@ -4,6 +4,7 @@
     <Nullable>enable</Nullable>
     <LangVersion>latest</LangVersion>
     <AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
+    <ApplicationIcon>Assets\icon.ico</ApplicationIcon>
   </PropertyGroup>
 
   
@@ -11,10 +12,47 @@
     <AvaloniaResource Include="Assets\**" />
   </ItemGroup>
 
+  
+  <ItemGroup>
+    <AvaloniaResource Remove="Assets\icon.ico" />
+    <AvaloniaResource Remove="Assets\icon.png" />
+  </ItemGroup>
+
+  
+  <ItemGroup>
+    <None Remove="Assets\Fonts\Roboto-Black.ttf" />
+    <None Remove="Assets\Fonts\Roboto-Bold.ttf" />
+    <None Remove="Assets\Fonts\Roboto-Italic.ttf" />
+    <None Remove="Assets\Fonts\Roboto-Light.ttf" />
+    <None Remove="Assets\Fonts\Roboto-LightItalic.ttf" />
+    <None Remove="Assets\Fonts\Roboto-Medium.ttf" />
+    <None Remove="Assets\Fonts\Roboto-MediumItalic.ttf" />
+    <None Remove="Assets\Fonts\Roboto-Regular.ttf" />
+    <None Remove="Assets\Fonts\Roboto-Thin.ttf" />
+    <None Remove="Assets\Fonts\Roboto-ThinItalic.ttf" />
+    <None Remove="Assets\Fonts\texgyreheros-bold.otf" />
+    <None Remove="Assets\Fonts\texgyreheros-italic.otf" />
+    <None Remove="Assets\Fonts\texgyreheros-regular.otf" />
+    <None Remove="Assets\icon.ico" />
+    <None Remove="Assets\icon.png" />
+    <None Remove="Themes\Dark\noisy-texture-200x200-o4-d31-c-161616-t0.png" />
+  </ItemGroup>
+
+  
+  <ItemGroup>
+    <Content Include="Assets\icon.ico" />
+  </ItemGroup>
+
   <ItemGroup>
     <PackageReference Include="Avalonia" Version="11.0.6" />
     <PackageReference Include="Avalonia.ReactiveUI" Version="11.0.6" />
     <!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
     <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.0.6" />
   </ItemGroup>
+
+  <ItemGroup>
+    <Resource Include="Assets\icon.png" />
+    <Resource Include="Assets\icon.ico" />
+    <AvaloniaResource Include="Themes\Dark\noisy-texture-200x200-o4-d31-c-161616-t0.png" />
+  </ItemGroup>
 </Project>

+ 39 - 0
src/PicView.Avalonia/Themes/Dark/DarkTheme.axaml

@@ -0,0 +1,39 @@
+<Styles xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+    <Styles.Resources>
+        <ResourceDictionary>
+            <Color x:Key="AccentColor">#FFDB5B3D</Color>
+            <Color x:Key="SecondaryAccentColor">#FFf8af3c</Color>
+
+            <Color x:Key="MainTextColor">#FFf6f4f4</Color>
+            <Color x:Key="MainTextColorFaded">#FFf6f4f4</Color>
+
+            <Color x:Key="MainIconColor">#eeebebeb</Color>
+            <Color x:Key="SecondaryIconColor">#eeebebeb</Color>
+
+            <Color x:Key="MainBackgroundColor">#FF2b2b2b</Color>
+            <Color x:Key="SecondaryBackgroundColor">#F2252525</Color>
+
+            <Color x:Key="MainButtonBackgroundColor">#FF2e2e2e</Color>
+
+            <Color x:Key="MainBorderColor">#FF3A3A3A</Color>
+
+            <ImageBrush
+                x:Key="NoisyTexture"
+                DestinationRect="0,0,100,100"
+                Opacity=".9"
+                Source="\Themes\Dark\noisy-texture-200x200-o4-d31-c-161616-t0.png"
+                SourceRect="0,0,200,200"
+                Stretch="Fill"
+                TileMode="FlipXY" />
+        </ResourceDictionary>
+    </Styles.Resources>
+    <Style Selector="TextBox, Label, Button">
+        <Setter Property="FontSize" Value="12" />
+        <Setter Property="FontFamily" Value="avares://PicView.Avalonia/Assets/Fonts#Roboto" />
+    </Style>
+    <Style Selector="TextBlock">
+        <Setter Property="FontSize" Value="14" />
+        <Setter Property="Foreground" Value="{StaticResource MainTextColor}" />
+        <Setter Property="FontFamily" Value="avares://PicView.Avalonia/Assets/Fonts#Roboto" />
+    </Style>
+</Styles>

BIN
src/PicView.Avalonia/Themes/Dark/noisy-texture-200x200-o4-d31-c-161616-t0.png


+ 23 - 15
src/PicView.Avalonia/Views/MainView.axaml

@@ -1,16 +1,24 @@
-<UserControl xmlns="https://github.com/avaloniaui"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-             xmlns:vm="clr-namespace:PicView.Avalonia.ViewModels"
-             mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
-             x:Class="PicView.Avalonia.Views.MainView"
-             x:DataType="vm:MainViewModel">
-  <Design.DataContext>
-    <!-- This only sets the DataContext for the previewer in an IDE,
-         to set the actual DataContext for runtime, set the DataContext property in code (look at App.axaml.cs) -->
-    <vm:MainViewModel />
-  </Design.DataContext>
+<UserControl
+    x:Class="PicView.Avalonia.Views.MainView"
+    xmlns="https://github.com/avaloniaui"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:vm="clr-namespace:PicView.Avalonia.ViewModels"
+    d:DesignHeight="450"
+    d:DesignWidth="800"
+    x:DataType="vm:MainViewModel"
+    mc:Ignorable="d">
+    <Design.DataContext>
+        <!--
+            This only sets the DataContext for the previewer in an IDE,
+            to set the actual DataContext for runtime, set the DataContext property in code (look at App.axaml.cs)
+        -->
+        <vm:MainViewModel />
+    </Design.DataContext>
 
-  <TextBlock Text="{Binding Greeting}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-</UserControl>
+    <TextBlock
+        HorizontalAlignment="Center"
+        VerticalAlignment="Center"
+        Text="{Binding Greeting}" />
+</UserControl>