mirror of
https://github.com/Stone-Red-Code/docs-desktop.git
synced 2026-09-07 07:56:07 +02:00
WPF publish initial content (#1032)
* Add overview article for new WPF (#178) * Remove previous WPF .NET 5 content * Overview article * New article: Create new WPF project (#183) * Basic index file * Finish article for new project. * acro * markdown fix * Fix build errors * fix code lang * fix code lang * Add differences article for WPF (#186) * Fix VS version for create app * Add differences article * Minor * fix overview styles code * Add code langs for overview * Port Window Overview WPF article (#1011) * Add Window overview article * Add TOC * Remove temp code * Fix headers * Port final Windows related articles (#1015) * Initial test commit * Add system dialogs * 75% complete * Add images * Fix linter * Add to toc * Add more howto * Fix code * Add get/set main window * Add missing code * Add to toc * Fix warnings * Fix warnings * missing code * Update see also * fix xref * Migrate wpf net core controls-styles articles (#1023) * Migrate control-styles * Fix links * Fix links * Port databinding article. (#1022) * Migrated databinding overview * update toc * Fix links/snippets * fix links * Move to correct folder * Port initial resources docs (#1026) * initial resources docs * Build errors * Update dotnet-desktop-guide/net/wpf/systems/xaml-resources-overview.md Co-authored-by: Genevieve Warren <[email protected]> * Apply suggestions from code review Co-authored-by: Genevieve Warren <[email protected]> * Feedback * Add app article * Add system article * Minor * meta * fix toc * Apply suggestions from code review Co-authored-by: Genevieve Warren <[email protected]> Co-authored-by: Genevieve Warren <[email protected]> * Add xaml article * reformat redirect * Redirects * WPF update XAML article (#1031) * convert snippets * minor edits * minor * Fix warnings * Fixes #1028 * Fixes #1028 * Apply suggestions from code review Co-authored-by: Genevieve Warren <[email protected]> * update redirects Co-authored-by: Genevieve Warren <[email protected]> * minor updates to link * Readd migration article * Warning fixes * Fix lint * Minor updates * Fix warnings for TOC/YML * last warnings Co-authored-by: Genevieve Warren <[email protected]>
This commit is contained in:
co-authored by
Genevieve Warren
parent
a3b012ae99
commit
ea8529f082
@@ -0,0 +1,9 @@
|
||||
<Application x:Class="Dialogs.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:Dialogs"
|
||||
StartupUri="Window1.xaml">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
using System.Windows;
|
||||
|
||||
namespace Dialogs
|
||||
{
|
||||
public partial class App : Application
|
||||
{
|
||||
private void Application_Startup(object sender, StartupEventArgs e)
|
||||
{
|
||||
// Create the window
|
||||
Window1 window = new Window1();
|
||||
|
||||
// Open the window
|
||||
window.Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
@@ -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)
|
||||
)]
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<UseWPF>true</UseWPF>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace Dialogs
|
||||
{
|
||||
public class MarginValidationRule : ValidationRule
|
||||
{
|
||||
public double MinMargin { get; set; }
|
||||
public double MaxMargin { get; set; }
|
||||
|
||||
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
|
||||
{
|
||||
double margin;
|
||||
|
||||
// Is a number?
|
||||
if (!double.TryParse((string)value, out margin))
|
||||
{
|
||||
return new ValidationResult(false, "Not a number.");
|
||||
}
|
||||
|
||||
// Is in range?
|
||||
if ((margin < MinMargin) || (margin > MaxMargin))
|
||||
{
|
||||
var msg = $"Margin must be between {MinMargin} and {MaxMargin}.";
|
||||
return new ValidationResult(false, msg);
|
||||
}
|
||||
|
||||
// Number is valid
|
||||
return new ValidationResult(true, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
<Window x:Class="Dialogs.Margins"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Title="Change Margins"
|
||||
Closing="Window_Closing"
|
||||
MinHeight="200"
|
||||
MinWidth="300"
|
||||
SizeToContent="WidthAndHeight"
|
||||
ResizeMode="NoResize"
|
||||
ShowInTaskbar="False"
|
||||
WindowStartupLocation="CenterOwner"
|
||||
FocusManager.FocusedElement="{Binding ElementName=leftMarginTextBox}">
|
||||
<Grid Margin="10">
|
||||
<Grid.Resources>
|
||||
<!-- Default settings for controls -->
|
||||
<Style TargetType="{x:Type Label}">
|
||||
<Setter Property="Margin" Value="0,3,5,5" />
|
||||
<Setter Property="Padding" Value="0,0,0,5" />
|
||||
</Style>
|
||||
<Style TargetType="{x:Type TextBox}">
|
||||
<Setter Property="Margin" Value="0,0,0,5" />
|
||||
</Style>
|
||||
<Style TargetType="{x:Type Button}">
|
||||
<Setter Property="Width" Value="70" />
|
||||
<Setter Property="Height" Value="25" />
|
||||
<Setter Property="Margin" Value="5,0,0,0" />
|
||||
</Style>
|
||||
</Grid.Resources>
|
||||
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Left,Top,Right,Bottom margins-->
|
||||
<Label Grid.Column="0" Grid.Row="0">Left Margin:</Label>
|
||||
<TextBox Name="leftMarginTextBox" Grid.Column="1" Grid.Row="0" />
|
||||
|
||||
<Label Grid.Column="0" Grid.Row="1">Top Margin:</Label>
|
||||
<TextBox Name="topMarginTextBox" Grid.Column="1" Grid.Row="1"/>
|
||||
|
||||
<Label Grid.Column="0" Grid.Row="2">Right Margin:</Label>
|
||||
<TextBox Name="rightMarginTextBox" Grid.Column="1" Grid.Row="2" />
|
||||
|
||||
<Label Grid.Column="0" Grid.Row="3">Bottom Margin:</Label>
|
||||
<TextBox Name="bottomMarginTextBox" Grid.Column="1" Grid.Row="3" />
|
||||
|
||||
<!-- Accept or Cancel -->
|
||||
<StackPanel Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="4" Orientation="Horizontal" HorizontalAlignment="Right">
|
||||
<Button Name="okButton" Click="okButton_Click" IsDefault="True">OK</Button>
|
||||
<Button Name="cancelButton" IsCancel="True">Cancel</Button>
|
||||
</StackPanel>
|
||||
</Grid >
|
||||
</Window>
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
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.Shapes;
|
||||
|
||||
namespace Dialogs
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Margins.xaml
|
||||
/// </summary>
|
||||
public partial class Margins : Window
|
||||
{
|
||||
public Margins()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void okButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
DialogResult = true;
|
||||
}
|
||||
|
||||
// <CancelAndHide>
|
||||
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
|
||||
{
|
||||
// First, cancel the window closure
|
||||
e.Cancel = true;
|
||||
|
||||
// Next, hide the window
|
||||
Hide();
|
||||
}
|
||||
// </CancelAndHide>
|
||||
}
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
<Window x:Class="Dialogs.Window1"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:Dialogs"
|
||||
Width="500" Height="165">
|
||||
|
||||
<StackPanel>
|
||||
<Button Click="Button_Click">Message Box</Button>
|
||||
<Button Click="Save_Click">Save file</Button>
|
||||
<Button Click="Open_Click">Open file</Button>
|
||||
<Button Click="Print_Click">Print</Button>
|
||||
<Button Click="formatMarginsButton_Click" Content="_Margins..."/>
|
||||
</StackPanel>
|
||||
|
||||
</Window>
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
using System.Windows;
|
||||
|
||||
namespace Dialogs
|
||||
{
|
||||
public partial class Window1 : Window
|
||||
{
|
||||
public Window1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void Button_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void Save_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void Open_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void Print_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void formatMarginsButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Method2();
|
||||
|
||||
}
|
||||
|
||||
// <DialogResultButtons>
|
||||
private void okButton_Click(object sender, RoutedEventArgs e) =>
|
||||
DialogResult = true;
|
||||
|
||||
private void cancelButton_Click(object sender, RoutedEventArgs e) =>
|
||||
DialogResult = false;
|
||||
// </DialogResultButtons>
|
||||
|
||||
private void Method()
|
||||
{
|
||||
// <HandleClosing>
|
||||
var marginsWindow = new Margins();
|
||||
|
||||
marginsWindow.Closed += (sender, eventArgs) =>
|
||||
{
|
||||
MessageBox.Show($"You closed the margins window! It had the title of {marginsWindow.Title}");
|
||||
};
|
||||
|
||||
marginsWindow.Show();
|
||||
// </HandleClosing>
|
||||
}
|
||||
|
||||
private void Method2()
|
||||
{
|
||||
// <HandleDialogResponse>
|
||||
var dialog = new Margins();
|
||||
|
||||
// Display the dialog box and read the response
|
||||
bool? result = dialog.ShowDialog();
|
||||
|
||||
if (result == true)
|
||||
{
|
||||
// User accepted the dialog box
|
||||
MessageBox.Show("Your request will be processed.");
|
||||
}
|
||||
else
|
||||
{
|
||||
// User cancelled the dialog box
|
||||
MessageBox.Show("Sorry it didn't work out, we'll try again later.");
|
||||
}
|
||||
// </HandleDialogResponse>
|
||||
}
|
||||
}
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<!-- UAC Manifest Options
|
||||
If you want to change the Windows User Account Control level replace the
|
||||
requestedExecutionLevel node with one of the following.
|
||||
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||
|
||||
Specifying requestedExecutionLevel element will disable file and registry virtualization.
|
||||
Remove this element if your application requires this virtualization for backwards
|
||||
compatibility.
|
||||
-->
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- A list of the Windows versions that this application has been tested on
|
||||
and is designed to work with. Uncomment the appropriate elements
|
||||
and Windows will automatically select the most compatible environment. -->
|
||||
|
||||
<!-- Windows Vista -->
|
||||
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
|
||||
|
||||
<!-- Windows 7 -->
|
||||
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
|
||||
|
||||
<!-- Windows 8 -->
|
||||
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
|
||||
|
||||
<!-- Windows 8.1 -->
|
||||
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
|
||||
|
||||
<!-- Windows 10 -->
|
||||
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
|
||||
|
||||
</application>
|
||||
</compatibility>
|
||||
|
||||
<!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher
|
||||
DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need
|
||||
to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should
|
||||
also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->
|
||||
<!--
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
-->
|
||||
|
||||
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="*"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
|
||||
</assembly>
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<Application x:Class="Application"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:Dialogs"
|
||||
StartupUri="Window1.xaml">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
Class Application
|
||||
|
||||
' Application-level events, such as Startup, Exit, and DispatcherUnhandledException
|
||||
' can be handled in this file.
|
||||
|
||||
End Class
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
Imports System.Windows
|
||||
|
||||
'The ThemeInfo attribute describes where any theme specific and generic resource dictionaries can be found.
|
||||
'1st parameter: where theme specific resource dictionaries are located
|
||||
'(used if a resource is not found in the page,
|
||||
' or application resource dictionaries)
|
||||
|
||||
'2nd parameter: where the generic resource dictionary is located
|
||||
'(used if a resource is not found in the page,
|
||||
'app, and any theme specific resource dictionaries)
|
||||
<Assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)>
|
||||
@@ -0,0 +1,22 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<RootNamespace>Dialogs</RootNamespace>
|
||||
<UseWPF>true</UseWPF>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Import Include="System.Windows" />
|
||||
<Import Include="System.Windows.Controls" />
|
||||
<Import Include="System.Windows.Data" />
|
||||
<Import Include="System.Windows.Documents" />
|
||||
<Import Include="System.Windows.Input" />
|
||||
<Import Include="System.Windows.Media" />
|
||||
<Import Include="System.Windows.Media.Imaging" />
|
||||
<Import Include="System.Windows.Navigation" />
|
||||
<Import Include="System.Windows.Shapes" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
Imports System.Globalization
|
||||
|
||||
Public Class MarginValidationRule
|
||||
Inherits ValidationRule
|
||||
|
||||
Public Property MinMargin As Double
|
||||
Public Property MaxMargin As Double
|
||||
|
||||
Public Overrides Function Validate(value As Object, cultureInfo As CultureInfo) As ValidationResult
|
||||
Dim margin As Double
|
||||
|
||||
' Is it a number?
|
||||
If Not Double.TryParse(DirectCast(value, String), margin) Then
|
||||
Return New ValidationResult(False, "Not a number")
|
||||
End If
|
||||
|
||||
' Is it in range
|
||||
If margin < MinMargin Or margin > MaxMargin Then
|
||||
Return New ValidationResult(False, $"Margin must be between {MinMargin} and {MaxMargin}")
|
||||
End If
|
||||
|
||||
Return New ValidationResult(True, Nothing)
|
||||
|
||||
End Function
|
||||
|
||||
End Class
|
||||
@@ -0,0 +1,115 @@
|
||||
<Window x:Class="Margins"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:Dialogs"
|
||||
Title="Margins"
|
||||
Closing="Window_Closing"
|
||||
MinHeight="200"
|
||||
MinWidth="300"
|
||||
SizeToContent="WidthAndHeight"
|
||||
ResizeMode="CanResizeWithGrip"
|
||||
ShowInTaskbar="False"
|
||||
WindowStartupLocation="CenterOwner"
|
||||
WindowStyle="ToolWindow"
|
||||
FocusManager.FocusedElement="{Binding ElementName=leftMarginTextBox}">
|
||||
<Grid>
|
||||
|
||||
<Grid.Resources>
|
||||
<Style TargetType="{x:Type Grid}">
|
||||
<Setter Property="Margin" Value="10" />
|
||||
</Style>
|
||||
<Style TargetType="{x:Type Label}">
|
||||
<Setter Property="Margin" Value="0,3,5,5" />
|
||||
<Setter Property="Padding" Value="0,0,0,5" />
|
||||
</Style>
|
||||
<Style TargetType="{x:Type TextBox}">
|
||||
<Setter Property="Margin" Value="0,0,0,5" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="Validation.HasError" Value="true">
|
||||
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
<Style TargetType="{x:Type StackPanel}">
|
||||
<Setter Property="Orientation" Value="Horizontal" />
|
||||
<Setter Property="HorizontalAlignment" Value="Right" />
|
||||
</Style>
|
||||
<Style TargetType="{x:Type Button}">
|
||||
<Setter Property="Width" Value="70" />
|
||||
<Setter Property="Height" Value="25" />
|
||||
<Setter Property="Margin" Value="5,0,0,0" />
|
||||
</Style>
|
||||
</Grid.Resources>
|
||||
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Left Margin -->
|
||||
<Label Grid.Column="0" Grid.Row="0">Left Margin:</Label>
|
||||
<TextBox Name="leftMarginTextBox" Grid.Column="1" Grid.Row="0">
|
||||
<TextBox.Text>
|
||||
<Binding Path="Left" UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:MarginValidationRule MinMargin="0" MaxMargin="10" />
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
|
||||
<!-- Top Margin -->
|
||||
<Label Grid.Column="0" Grid.Row="1">Top Margin:</Label>
|
||||
<TextBox Name="topMarginTextBox" Grid.Column="1" Grid.Row="1">
|
||||
<TextBox.Text>
|
||||
<Binding Path="Top" UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:MarginValidationRule MinMargin="0" MaxMargin="10" />
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
|
||||
<!-- Right Margin -->
|
||||
<Label Grid.Column="0" Grid.Row="2">Right Margin:</Label>
|
||||
<TextBox Name="rightMarginTextBox" Grid.Column="1" Grid.Row="2">
|
||||
<TextBox.Text>
|
||||
<Binding Path="Right" UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:MarginValidationRule MinMargin="0" MaxMargin="10" />
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
|
||||
<!-- Bottom Margin -->
|
||||
<Label Grid.Column="0" Grid.Row="3">Bottom Margin:</Label>
|
||||
<TextBox Name="bottomMarginTextBox" Grid.Column="1" Grid.Row="3">
|
||||
<TextBox.Text>
|
||||
<Binding Path="Bottom" UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:MarginValidationRule MinMargin="0" MaxMargin="10" />
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
|
||||
<!-- Accept or Cancel -->
|
||||
<StackPanel Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="4">
|
||||
<Button Name="okButton" IsDefault="True" Click="okButton_Click">OK</Button>
|
||||
<Button Name="cancelButton" IsCancel="True">Cancel</Button>
|
||||
</StackPanel>
|
||||
|
||||
</Grid >
|
||||
</Window>
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
Public Class Margins
|
||||
Private Sub okButton_Click(sender As Object, e As RoutedEventArgs)
|
||||
|
||||
End Sub
|
||||
|
||||
'<CancelAndHide>
|
||||
Private Sub Window_Closing(sender As Object, e As ComponentModel.CancelEventArgs)
|
||||
'First, cancel the window closure
|
||||
e.Cancel = True
|
||||
|
||||
'Next, hide the window
|
||||
Hide()
|
||||
End Sub
|
||||
'</CancelAndHide>
|
||||
End Class
|
||||
@@ -0,0 +1,16 @@
|
||||
<Window x:Class="Window1"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:Dialogs"
|
||||
mc:Ignorable="d"
|
||||
Title="Names" Height="180" Width="260">
|
||||
<StackPanel>
|
||||
<Button>Message Box</Button>
|
||||
<Button>Save file</Button>
|
||||
<Button>Open file</Button>
|
||||
<Button>Print</Button>
|
||||
<Button Click="formatMarginsButton_Click" Content="_Margins..."/>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
Public Class Window1
|
||||
'<DialogResultButtons>
|
||||
Private Sub okButton_Click(sender As Object, e As RoutedEventArgs)
|
||||
DialogResult = True
|
||||
End Sub
|
||||
|
||||
Private Sub cancelButton_Click(sender As Object, e As RoutedEventArgs)
|
||||
DialogResult = False
|
||||
End Sub
|
||||
'</DialogResultButtons>
|
||||
|
||||
Private Sub Method1()
|
||||
'<HandleClosing>
|
||||
Dim marginsWindow As New Margins
|
||||
|
||||
AddHandler marginsWindow.Closed, Sub(sender As Object, e As EventArgs)
|
||||
MessageBox.Show($"You closed the margins window! It had the title of {marginsWindow.Title}")
|
||||
End Sub
|
||||
|
||||
marginsWindow.Show()
|
||||
'</HandleClosing>
|
||||
End Sub
|
||||
|
||||
Private Sub formatMarginsButton_Click(sender As Object, e As RoutedEventArgs)
|
||||
Method1()
|
||||
End Sub
|
||||
|
||||
Private Sub Method2()
|
||||
'<HandleDialogResponse>
|
||||
Dim marginsWindow As New Margins
|
||||
|
||||
Dim result As Boolean? = marginsWindow.ShowDialog()
|
||||
|
||||
If result = True Then
|
||||
' User accepted the dialog box
|
||||
MessageBox.Show("Your request will be processed.")
|
||||
Else
|
||||
' User cancelled the dialog box
|
||||
MessageBox.Show("Sorry it didn't work out, we'll try again later.")
|
||||
End If
|
||||
|
||||
marginsWindow.Show()
|
||||
'</HandleDialogResponse>
|
||||
End Sub
|
||||
End Class
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<Application x:Class="CloseWindows.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:CloseWindows"
|
||||
Startup="Application_Startup">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
using System.Windows;
|
||||
|
||||
namespace CloseWindows
|
||||
{
|
||||
public partial class App : Application
|
||||
{
|
||||
private void Application_Startup(object sender, StartupEventArgs e)
|
||||
{
|
||||
// Create the window
|
||||
Window1 window = new Window1();
|
||||
|
||||
// Open the window
|
||||
window.Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
@@ -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)
|
||||
)]
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<UseWPF>true</UseWPF>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace CloseWindows
|
||||
{
|
||||
public class MarginValidationRule : ValidationRule
|
||||
{
|
||||
public double MinMargin { get; set; }
|
||||
public double MaxMargin { get; set; }
|
||||
|
||||
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
|
||||
{
|
||||
double margin;
|
||||
|
||||
// Is a number?
|
||||
if (!double.TryParse((string)value, out margin))
|
||||
{
|
||||
return new ValidationResult(false, "Not a number.");
|
||||
}
|
||||
|
||||
// Is in range?
|
||||
if ((margin < MinMargin) || (margin > MaxMargin))
|
||||
{
|
||||
var msg = $"Margin must be between {MinMargin} and {MaxMargin}.";
|
||||
return new ValidationResult(false, msg);
|
||||
}
|
||||
|
||||
// Number is valid
|
||||
return new ValidationResult(true, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
+115
@@ -0,0 +1,115 @@
|
||||
<Window x:Class="CloseWindows.Margins"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:CloseWindows"
|
||||
Title="Margins"
|
||||
MinHeight="200"
|
||||
MinWidth="300"
|
||||
SizeToContent="WidthAndHeight"
|
||||
ResizeMode="CanResizeWithGrip"
|
||||
ShowInTaskbar="False"
|
||||
WindowStartupLocation="CenterOwner"
|
||||
WindowStyle="ToolWindow"
|
||||
Closing="Window_Closing"
|
||||
FocusManager.FocusedElement="{Binding ElementName=leftMarginTextBox}">
|
||||
<Grid>
|
||||
|
||||
<Grid.Resources>
|
||||
<Style TargetType="{x:Type Grid}">
|
||||
<Setter Property="Margin" Value="10" />
|
||||
</Style>
|
||||
<Style TargetType="{x:Type Label}">
|
||||
<Setter Property="Margin" Value="0,3,5,5" />
|
||||
<Setter Property="Padding" Value="0,0,0,5" />
|
||||
</Style>
|
||||
<Style TargetType="{x:Type TextBox}">
|
||||
<Setter Property="Margin" Value="0,0,0,5" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="Validation.HasError" Value="true">
|
||||
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
<Style TargetType="{x:Type StackPanel}">
|
||||
<Setter Property="Orientation" Value="Horizontal" />
|
||||
<Setter Property="HorizontalAlignment" Value="Right" />
|
||||
</Style>
|
||||
<Style TargetType="{x:Type Button}">
|
||||
<Setter Property="Width" Value="70" />
|
||||
<Setter Property="Height" Value="25" />
|
||||
<Setter Property="Margin" Value="5,0,0,0" />
|
||||
</Style>
|
||||
</Grid.Resources>
|
||||
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Left Margin -->
|
||||
<Label Grid.Column="0" Grid.Row="0">Left Margin:</Label>
|
||||
<TextBox Name="leftMarginTextBox" Grid.Column="1" Grid.Row="0">
|
||||
<TextBox.Text>
|
||||
<Binding Path="Left" UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:MarginValidationRule MinMargin="0" MaxMargin="10" />
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
|
||||
<!-- Top Margin -->
|
||||
<Label Grid.Column="0" Grid.Row="1">Top Margin:</Label>
|
||||
<TextBox Name="topMarginTextBox" Grid.Column="1" Grid.Row="1">
|
||||
<TextBox.Text>
|
||||
<Binding Path="Top" UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:MarginValidationRule MinMargin="0" MaxMargin="10" />
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
|
||||
<!-- Right Margin -->
|
||||
<Label Grid.Column="0" Grid.Row="2">Right Margin:</Label>
|
||||
<TextBox Name="rightMarginTextBox" Grid.Column="1" Grid.Row="2">
|
||||
<TextBox.Text>
|
||||
<Binding Path="Right" UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:MarginValidationRule MinMargin="0" MaxMargin="10" />
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
|
||||
<!-- Bottom Margin -->
|
||||
<Label Grid.Column="0" Grid.Row="3">Bottom Margin:</Label>
|
||||
<TextBox Name="bottomMarginTextBox" Grid.Column="1" Grid.Row="3">
|
||||
<TextBox.Text>
|
||||
<Binding Path="Bottom" UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:MarginValidationRule MinMargin="0" MaxMargin="10" />
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
|
||||
<!-- Accept or Cancel -->
|
||||
<StackPanel Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="4">
|
||||
<Button Name="okButton" IsDefault="True" Click="okButton_Click">OK</Button>
|
||||
<Button Name="cancelButton" IsCancel="True">Cancel</Button>
|
||||
</StackPanel>
|
||||
|
||||
</Grid >
|
||||
</Window>
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
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.Shapes;
|
||||
|
||||
namespace CloseWindows
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Margins.xaml
|
||||
/// </summary>
|
||||
public partial class Margins : Window
|
||||
{
|
||||
public Margins()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void okButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
DialogResult = true;
|
||||
}
|
||||
|
||||
// <CancelAndHide>
|
||||
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
|
||||
{
|
||||
// Cancel the closure
|
||||
e.Cancel = true;
|
||||
|
||||
// Hide the window
|
||||
Hide();
|
||||
}
|
||||
// </CancelAndHide>
|
||||
}
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
<Window x:Class="CloseWindows.Menus"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:CloseWindows"
|
||||
mc:Ignorable="d"
|
||||
Title="Simple Text Editor"
|
||||
Width="400" Height="230">
|
||||
<Grid>
|
||||
<Grid.Resources>
|
||||
<Style TargetType="{x:Type Button}">
|
||||
<Setter Property="Width" Value="70" />
|
||||
<Setter Property="Height" Value="25" />
|
||||
<Setter Property="Margin" Value="5,0,0,0" />
|
||||
</Style>
|
||||
</Grid.Resources>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Menu>
|
||||
<MenuItem Header="File">
|
||||
<MenuItem Header="Open..." />
|
||||
<Separator />
|
||||
<MenuItem Header="Save" />
|
||||
<MenuItem Header="Save As..." />
|
||||
</MenuItem>
|
||||
</Menu>
|
||||
<TextBox Grid.Row="1" AcceptsReturn="True" TextWrapping="Wrap" Margin="5">
|
||||
<TextBox.Text>This is a text editor. This is a text editor. This is a text editor. This is a text editor. This is a text editor. This is a text editor. This is a text editor. This is a text editor. This is a text editor. This is a text editor. This is a text editor. This is a text editor. </TextBox.Text>
|
||||
</TextBox>
|
||||
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Right" Margin="5">
|
||||
<Button Name="closeButton" Click="closeButton_Click">Close</Button>
|
||||
<Button Name="saveButton" Click="saveButton_Click">Save</Button>
|
||||
<Button Name="saveAsButton">Save As...</Button>
|
||||
<Button x:Name="okButton" IsDefault="True" Content="OK" Click="okButton_Click"/>
|
||||
<!--<CancelButton>-->
|
||||
<Button x:Name="cancelButton" Content="Cancel" IsCancel="true"/>
|
||||
<!--</CancelButton>-->
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Window>
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
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.Shapes;
|
||||
|
||||
namespace CloseWindows
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Menus.xaml
|
||||
/// </summary>
|
||||
public partial class Menus : Window
|
||||
{
|
||||
public Menus()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
// <CloseDialog>
|
||||
private void okButton_Click(object sender, RoutedEventArgs e) =>
|
||||
DialogResult = true;
|
||||
|
||||
private void cancelButton_Click(object sender, RoutedEventArgs e) =>
|
||||
DialogResult = false;
|
||||
// </CloseDialog>
|
||||
|
||||
// <CloseNormal>
|
||||
private void closeButton_Click(object sender, RoutedEventArgs e) =>
|
||||
Close();
|
||||
// </CloseNormal>
|
||||
|
||||
// <Hide>
|
||||
private void saveButton_Click(object sender, RoutedEventArgs e) =>
|
||||
Hide();
|
||||
// </Hide>
|
||||
}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
<Window x:Class="CloseWindows.Window1"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:CloseWindows"
|
||||
Title="Window Example"
|
||||
Width="300" Height="165">
|
||||
|
||||
<StackPanel>
|
||||
<Button Click="formatMarginsButton_Click" Content="_Margins..."/>
|
||||
<Button Click="showMenus_Click" Content="Menus" />
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button Name="okButton" Click="okButton_Click">OK</Button>
|
||||
<!-- <CancelButton> -->
|
||||
<Button Name="cancelButton" IsCancel="True">Cancel</Button>
|
||||
<!-- </CancelButton> -->
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
</Window>
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
using System.Windows;
|
||||
|
||||
namespace CloseWindows
|
||||
{
|
||||
public partial class Window1 : Window
|
||||
{
|
||||
public Window1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void formatMarginsButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// <ShowDialog>
|
||||
var window = new Margins();
|
||||
window.Owner = this;
|
||||
window.ShowDialog();
|
||||
// </ShowDialog>
|
||||
}
|
||||
|
||||
private void showMenus_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var menu = new Menus();
|
||||
var result = menu.ShowDialog();
|
||||
menu.Show();
|
||||
}
|
||||
|
||||
// <DialogResultButtons>
|
||||
private void okButton_Click(object sender, RoutedEventArgs e) =>
|
||||
DialogResult = true;
|
||||
|
||||
private void cancelButton_Click(object sender, RoutedEventArgs e) =>
|
||||
DialogResult = false;
|
||||
// </DialogResultButtons>
|
||||
}
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<!-- UAC Manifest Options
|
||||
If you want to change the Windows User Account Control level replace the
|
||||
requestedExecutionLevel node with one of the following.
|
||||
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||
|
||||
Specifying requestedExecutionLevel element will disable file and registry virtualization.
|
||||
Remove this element if your application requires this virtualization for backwards
|
||||
compatibility.
|
||||
-->
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- A list of the Windows versions that this application has been tested on
|
||||
and is designed to work with. Uncomment the appropriate elements
|
||||
and Windows will automatically select the most compatible environment. -->
|
||||
|
||||
<!-- Windows Vista -->
|
||||
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
|
||||
|
||||
<!-- Windows 7 -->
|
||||
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
|
||||
|
||||
<!-- Windows 8 -->
|
||||
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
|
||||
|
||||
<!-- Windows 8.1 -->
|
||||
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
|
||||
|
||||
<!-- Windows 10 -->
|
||||
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
|
||||
|
||||
</application>
|
||||
</compatibility>
|
||||
|
||||
<!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher
|
||||
DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need
|
||||
to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should
|
||||
also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->
|
||||
<!--
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
-->
|
||||
|
||||
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="*"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
|
||||
</assembly>
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<Application x:Class="Application"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:CloseWindows"
|
||||
Startup="Application_Startup">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
Class Application
|
||||
|
||||
Private Sub Application_Startup(sender As Object, e As StartupEventArgs)
|
||||
' Create the window
|
||||
Dim window As New Window1
|
||||
|
||||
' Open the window
|
||||
window.Show()
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
Imports System.Windows
|
||||
|
||||
'The ThemeInfo attribute describes where any theme specific and generic resource dictionaries can be found.
|
||||
'1st parameter: where theme specific resource dictionaries are located
|
||||
'(used if a resource is not found in the page,
|
||||
' or application resource dictionaries)
|
||||
|
||||
'2nd parameter: where the generic resource dictionary is located
|
||||
'(used if a resource is not found in the page,
|
||||
'app, and any theme specific resource dictionaries)
|
||||
<Assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)>
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
Public Class Class1
|
||||
|
||||
End Class
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<RootNamespace>CloseWindows</RootNamespace>
|
||||
<UseWPF>true</UseWPF>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Import Include="System.Windows" />
|
||||
<Import Include="System.Windows.Controls" />
|
||||
<Import Include="System.Windows.Data" />
|
||||
<Import Include="System.Windows.Documents" />
|
||||
<Import Include="System.Windows.Input" />
|
||||
<Import Include="System.Windows.Media" />
|
||||
<Import Include="System.Windows.Media.Imaging" />
|
||||
<Import Include="System.Windows.Navigation" />
|
||||
<Import Include="System.Windows.Shapes" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
Imports System.Globalization
|
||||
|
||||
Public Class MarginValidationRule
|
||||
Inherits ValidationRule
|
||||
|
||||
Public Property MinMargin As Double
|
||||
Public Property MaxMargin As Double
|
||||
|
||||
Public Overrides Function Validate(value As Object, cultureInfo As CultureInfo) As ValidationResult
|
||||
Dim margin As Double
|
||||
|
||||
' Is it a number?
|
||||
If Not Double.TryParse(DirectCast(value, String), margin) Then
|
||||
Return New ValidationResult(False, "Not a number")
|
||||
End If
|
||||
|
||||
' Is it in range
|
||||
If margin < MinMargin Or margin > MaxMargin Then
|
||||
Return New ValidationResult(False, $"Margin must be between {MinMargin} and {MaxMargin}")
|
||||
End If
|
||||
|
||||
Return New ValidationResult(True, Nothing)
|
||||
|
||||
End Function
|
||||
|
||||
End Class
|
||||
+115
@@ -0,0 +1,115 @@
|
||||
<Window x:Class="Margins"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:CloseWindows"
|
||||
Title="Margins"
|
||||
MinHeight="200"
|
||||
MinWidth="300"
|
||||
SizeToContent="WidthAndHeight"
|
||||
ResizeMode="CanResizeWithGrip"
|
||||
ShowInTaskbar="False"
|
||||
WindowStartupLocation="CenterOwner"
|
||||
WindowStyle="ToolWindow"
|
||||
Closing="Window_Closing"
|
||||
FocusManager.FocusedElement="{Binding ElementName=leftMarginTextBox}">
|
||||
<Grid>
|
||||
|
||||
<Grid.Resources>
|
||||
<Style TargetType="{x:Type Grid}">
|
||||
<Setter Property="Margin" Value="10" />
|
||||
</Style>
|
||||
<Style TargetType="{x:Type Label}">
|
||||
<Setter Property="Margin" Value="0,3,5,5" />
|
||||
<Setter Property="Padding" Value="0,0,0,5" />
|
||||
</Style>
|
||||
<Style TargetType="{x:Type TextBox}">
|
||||
<Setter Property="Margin" Value="0,0,0,5" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="Validation.HasError" Value="true">
|
||||
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
<Style TargetType="{x:Type StackPanel}">
|
||||
<Setter Property="Orientation" Value="Horizontal" />
|
||||
<Setter Property="HorizontalAlignment" Value="Right" />
|
||||
</Style>
|
||||
<Style TargetType="{x:Type Button}">
|
||||
<Setter Property="Width" Value="70" />
|
||||
<Setter Property="Height" Value="25" />
|
||||
<Setter Property="Margin" Value="5,0,0,0" />
|
||||
</Style>
|
||||
</Grid.Resources>
|
||||
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Left Margin -->
|
||||
<Label Grid.Column="0" Grid.Row="0">Left Margin:</Label>
|
||||
<TextBox Name="leftMarginTextBox" Grid.Column="1" Grid.Row="0">
|
||||
<TextBox.Text>
|
||||
<Binding Path="Left" UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:MarginValidationRule MinMargin="0" MaxMargin="10" />
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
|
||||
<!-- Top Margin -->
|
||||
<Label Grid.Column="0" Grid.Row="1">Top Margin:</Label>
|
||||
<TextBox Name="topMarginTextBox" Grid.Column="1" Grid.Row="1">
|
||||
<TextBox.Text>
|
||||
<Binding Path="Top" UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:MarginValidationRule MinMargin="0" MaxMargin="10" />
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
|
||||
<!-- Right Margin -->
|
||||
<Label Grid.Column="0" Grid.Row="2">Right Margin:</Label>
|
||||
<TextBox Name="rightMarginTextBox" Grid.Column="1" Grid.Row="2">
|
||||
<TextBox.Text>
|
||||
<Binding Path="Right" UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:MarginValidationRule MinMargin="0" MaxMargin="10" />
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
|
||||
<!-- Bottom Margin -->
|
||||
<Label Grid.Column="0" Grid.Row="3">Bottom Margin:</Label>
|
||||
<TextBox Name="bottomMarginTextBox" Grid.Column="1" Grid.Row="3">
|
||||
<TextBox.Text>
|
||||
<Binding Path="Bottom" UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:MarginValidationRule MinMargin="0" MaxMargin="10" />
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
|
||||
<!-- Accept or Cancel -->
|
||||
<StackPanel Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="4">
|
||||
<Button Name="okButton" IsDefault="True" Click="okButton_Click">OK</Button>
|
||||
<Button Name="cancelButton" IsCancel="True">Cancel</Button>
|
||||
</StackPanel>
|
||||
|
||||
</Grid >
|
||||
</Window>
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
Public Class Margins
|
||||
Private Sub okButton_Click(sender As Object, e As RoutedEventArgs)
|
||||
|
||||
End Sub
|
||||
|
||||
'<CancelAndHide>
|
||||
Private Sub Window_Closing(sender As Object, e As ComponentModel.CancelEventArgs)
|
||||
' Cancel the closure
|
||||
e.Cancel = True
|
||||
|
||||
' Hide the window
|
||||
Hide()
|
||||
End Sub
|
||||
'</CancelAndHide>
|
||||
End Class
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
<Window x:Class="Menus"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:CloseWindows"
|
||||
mc:Ignorable="d"
|
||||
Title="Simple Text Editor"
|
||||
Width="400" Height="230">
|
||||
<Grid>
|
||||
<Grid.Resources>
|
||||
<Style TargetType="{x:Type Button}">
|
||||
<Setter Property="Width" Value="70" />
|
||||
<Setter Property="Height" Value="25" />
|
||||
<Setter Property="Margin" Value="5,0,0,0" />
|
||||
</Style>
|
||||
</Grid.Resources>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Menu>
|
||||
<MenuItem Header="File">
|
||||
<MenuItem Header="Open..." />
|
||||
<Separator />
|
||||
<MenuItem Header="Save" />
|
||||
<MenuItem Header="Save As..." />
|
||||
</MenuItem>
|
||||
</Menu>
|
||||
<TextBox Grid.Row="1" AcceptsReturn="True" TextWrapping="Wrap" Margin="5">
|
||||
<TextBox.Text>This is a text editor. This is a text editor. This is a text editor. This is a text editor. This is a text editor. This is a text editor. This is a text editor. This is a text editor. This is a text editor. This is a text editor. This is a text editor. This is a text editor.</TextBox.Text>
|
||||
</TextBox>
|
||||
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Right" Margin="5">
|
||||
<Button Name="closeButton" Click="closeButton_Click">Close</Button>
|
||||
<Button Name="saveButton" Click="saveButton_Click">Save</Button>
|
||||
<Button Name="saveAsButton">Save As...</Button>
|
||||
<Button x:Name="okButton" IsDefault="True" Content="OK" Click="okButton_Click"/>
|
||||
<!--<CancelButton>-->
|
||||
<Button x:Name="cancelButton" Content="Cancel" IsCancel="true"/>
|
||||
<!--</CancelButton>-->
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Window>
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
Public Class Menus
|
||||
'<CloseDialog>
|
||||
Private Sub okButton_Click(sender As Object, e As RoutedEventArgs)
|
||||
DialogResult = True
|
||||
End Sub
|
||||
|
||||
Private Sub cancelButton_Click(sender As Object, e As RoutedEventArgs)
|
||||
DialogResult = False
|
||||
End Sub
|
||||
'</CloseDialog>
|
||||
|
||||
'<CloseNormal>
|
||||
Private Sub closeButton_Click(sender As Object, e As RoutedEventArgs)
|
||||
Close()
|
||||
End Sub
|
||||
'</CloseNormal>
|
||||
|
||||
'<Hide>
|
||||
Private Sub saveButton_Click(sender As Object, e As RoutedEventArgs)
|
||||
Hide()
|
||||
End Sub
|
||||
'</Hide>
|
||||
End Class
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
<Window x:Class="Window1"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:CloseWindows"
|
||||
mc:Ignorable="d"
|
||||
Title="Names" Height="180" Width="260">
|
||||
<StackPanel>
|
||||
<Button Click="Button_Click">Message Box</Button>
|
||||
<Button Click="Save_Click">Save file</Button>
|
||||
<Button Click="Open_Click">Open file</Button>
|
||||
<Button Click="Print_Click">Print</Button>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
Public Class Window1
|
||||
Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
|
||||
'<YesNoCancel>
|
||||
Dim messageBoxText As String = "Do you want to save changes?"
|
||||
Dim caption As String = "Word Processor"
|
||||
Dim Button As MessageBoxButton = MessageBoxButton.YesNoCancel
|
||||
Dim Icon As MessageBoxImage = MessageBoxImage.Warning
|
||||
Dim result As MessageBoxResult
|
||||
|
||||
'<MessageBoxShow>
|
||||
result = MessageBox.Show(messageBoxText, caption, Button, Icon)
|
||||
'</YesNoCancel>
|
||||
|
||||
Select Case result
|
||||
Case MessageBoxResult.Cancel
|
||||
' User pressed Cancel
|
||||
Case MessageBoxResult.Yes
|
||||
' User pressed Yes
|
||||
Case MessageBoxResult.No
|
||||
' User pressed No
|
||||
End Select
|
||||
'</MessageBoxShow>
|
||||
End Sub
|
||||
|
||||
Private Sub Save_Click(sender As Object, e As RoutedEventArgs)
|
||||
'<SaveFile>
|
||||
' Configure save file dialog box
|
||||
Dim dialog As New Microsoft.Win32.SaveFileDialog()
|
||||
dialog.FileName = "Document" ' Default file name
|
||||
dialog.DefaultExt = ".txt" ' Default file extension
|
||||
dialog.Filter = "Text documents (.txt)|*.txt" ' Filter files by extension
|
||||
|
||||
' Show save file dialog box
|
||||
Dim result As Boolean? = dialog.ShowDialog()
|
||||
|
||||
' Process save file dialog box results
|
||||
If result = True Then
|
||||
' Save document
|
||||
Dim filename As String = dialog.FileName
|
||||
End If
|
||||
'</SaveFile>
|
||||
End Sub
|
||||
|
||||
Private Sub Open_Click(sender As Object, e As RoutedEventArgs)
|
||||
'<OpenFile>
|
||||
' Configure open file dialog box
|
||||
Dim dialog As New Microsoft.Win32.OpenFileDialog()
|
||||
dialog.FileName = "Document" ' Default file name
|
||||
dialog.DefaultExt = ".txt" ' Default file extension
|
||||
dialog.Filter = "Text documents (.txt)|*.txt" ' Filter files by extension
|
||||
|
||||
' Show open file dialog box
|
||||
Dim result As Boolean? = dialog.ShowDialog()
|
||||
|
||||
' Process open file dialog box results
|
||||
If result = True Then
|
||||
' Open document
|
||||
Dim filename As String = dialog.FileName
|
||||
End If
|
||||
'</OpenFile>
|
||||
End Sub
|
||||
|
||||
Private Sub Print_Click(sender As Object, e As RoutedEventArgs)
|
||||
'<Print>
|
||||
' Configure printer dialog box
|
||||
Dim dialog As New System.Windows.Controls.PrintDialog()
|
||||
dialog.PageRangeSelection = System.Windows.Controls.PageRangeSelection.AllPages
|
||||
dialog.UserPageRangeEnabled = True
|
||||
|
||||
' Show save file dialog box
|
||||
Dim result As Boolean? = dialog.ShowDialog()
|
||||
|
||||
' Process save file dialog box results
|
||||
If result = True Then
|
||||
' Print document
|
||||
End If
|
||||
'</Print>
|
||||
End Sub
|
||||
End Class
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
<Application x:Class="MainApp.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:MainApp"
|
||||
StartupUri="Window1.xaml">
|
||||
|
||||
</Application>
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
using System.Windows;
|
||||
|
||||
namespace MainApp
|
||||
{
|
||||
public partial class App : Application
|
||||
{
|
||||
private void Application_Startup(object sender, StartupEventArgs e)
|
||||
{
|
||||
// <MainWindowDirect>
|
||||
Application.Current.MainWindow = new Window2();
|
||||
|
||||
Application.Current.MainWindow.Show();
|
||||
// </MainWindowDirect>
|
||||
|
||||
// <MainWindowIndirect>
|
||||
var appWindow = new Window2();
|
||||
|
||||
appWindow.Show();
|
||||
// </MainWindowIndirect>
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
@@ -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)
|
||||
)]
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<UseWPF>true</UseWPF>
|
||||
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
<Window x:Class="MainApp.Window1"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:MainApp"
|
||||
Width="500" Height="165">
|
||||
|
||||
<!-- Client area containing the content of the window -->
|
||||
<Button Click="Button_Click">Click This Button</Button>
|
||||
|
||||
</Window>
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
using System.Windows;
|
||||
|
||||
namespace MainApp
|
||||
{
|
||||
public partial class Window1 : Window
|
||||
{
|
||||
public Window1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
// <GetMainWindow>
|
||||
private void Button_Click(object sender, RoutedEventArgs e) =>
|
||||
MessageBox.Show($"The main window's title is: {Application.Current.MainWindow.Title}");
|
||||
// </GetMainWindow>
|
||||
}
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
<Window x:Class="MainApp.Window2"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:MainApp"
|
||||
mc:Ignorable="d"
|
||||
Title="Window2" Height="450" Width="800">
|
||||
<Grid>
|
||||
<TextBlock Text="Hi! I'm the second window!" />
|
||||
</Grid>
|
||||
</Window>
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
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.Shapes;
|
||||
|
||||
namespace MainApp
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window2.xaml
|
||||
/// </summary>
|
||||
public partial class Window2 : Window
|
||||
{
|
||||
public Window2()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<Application x:Class="Application"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-MainApppace:MainApp"
|
||||
Startup="Application_Startup">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
Class Application
|
||||
|
||||
Private Sub Application_Startup(sender As Object, e As StartupEventArgs)
|
||||
'<MainWindowDirect>
|
||||
Application.Current.MainWindow = New Window2()
|
||||
|
||||
Application.Current.MainWindow.Show()
|
||||
'</MainWindowDirect>
|
||||
|
||||
'<MainWindowIndirect>
|
||||
Dim appWindow As New Window2()
|
||||
|
||||
appWindow.Show()
|
||||
'</MainWindowIndirect>
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
Imports System.Windows
|
||||
|
||||
'The ThemeInfo attribute describes where any theme specific and generic resource dictionaries can be found.
|
||||
'1st parameter: where theme specific resource dictionaries are located
|
||||
'(used if a resource is not found in the page,
|
||||
' or application resource dictionaries)
|
||||
|
||||
'2nd parameter: where the generic resource dictionary is located
|
||||
'(used if a resource is not found in the page,
|
||||
'app, and any theme specific resource dictionaries)
|
||||
<Assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)>
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
Public Class Class1
|
||||
|
||||
End Class
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<RootNamespace>WindowsOverview</RootNamespace>
|
||||
<UseWPF>true</UseWPF>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Import Include="System.Windows" />
|
||||
<Import Include="System.Windows.Controls" />
|
||||
<Import Include="System.Windows.Data" />
|
||||
<Import Include="System.Windows.Documents" />
|
||||
<Import Include="System.Windows.Input" />
|
||||
<Import Include="System.Windows.Media" />
|
||||
<Import Include="System.Windows.Media.Imaging" />
|
||||
<Import Include="System.Windows.Navigation" />
|
||||
<Import Include="System.Windows.Shapes" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
<Window x:Class="Window1"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:WindowsOverview"
|
||||
mc:Ignorable="d"
|
||||
Title="Names" Height="180" Width="260">
|
||||
<!-- Client area containing the content of the window -->
|
||||
<Button Click="Button_Click">Click This Button</Button>
|
||||
</Window>
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
Public Class Window1
|
||||
'<GetMainWindow>
|
||||
Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
|
||||
MessageBox.Show($"The main window's title is: {Application.Current.MainWindow.Title}")
|
||||
End Sub
|
||||
'</GetMainWindow>
|
||||
End Class
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
<Window x:Class="Window2"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:WindowsOverview"
|
||||
mc:Ignorable="d"
|
||||
Title="Window2" Height="450" Width="800">
|
||||
<Grid>
|
||||
|
||||
</Grid>
|
||||
</Window>
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
Public Class Window2
|
||||
|
||||
End Class
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<Application x:Class="MainApp.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:MainApp">
|
||||
|
||||
<Application.MainWindow>
|
||||
<local:Window2 Visibility="Visible" />
|
||||
</Application.MainWindow>
|
||||
</Application>
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
using System.Windows;
|
||||
|
||||
namespace MainApp
|
||||
{
|
||||
public partial class App : Application
|
||||
{
|
||||
private void Application_Startup(object sender, StartupEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
@@ -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)
|
||||
)]
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<UseWPF>true</UseWPF>
|
||||
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
<Window x:Class="MainApp.Window1"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:MainApp"
|
||||
Width="500" Height="165">
|
||||
|
||||
<!-- Client area containing the content of the window -->
|
||||
<Button Click="Button_Click">Click This Button</Button>
|
||||
|
||||
</Window>
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
using System.Windows;
|
||||
|
||||
namespace MainApp
|
||||
{
|
||||
public partial class Window1 : Window
|
||||
{
|
||||
public Window1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void Button_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
<Window x:Class="MainApp.Window2"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:MainApp"
|
||||
mc:Ignorable="d"
|
||||
Title="Window2" Height="450" Width="800">
|
||||
<Grid>
|
||||
<TextBlock Text="Hi! I'm the second window!" />
|
||||
</Grid>
|
||||
</Window>
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
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.Shapes;
|
||||
|
||||
namespace MainApp
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window2.xaml
|
||||
/// </summary>
|
||||
public partial class Window2 : Window
|
||||
{
|
||||
public Window2()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<Application x:Class="WindowsOverview.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:WindowsOverview"
|
||||
Startup="Application_Startup">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
using System.Windows;
|
||||
|
||||
namespace WindowsOverview
|
||||
{
|
||||
public partial class App : Application
|
||||
{
|
||||
private void Application_Startup(object sender, StartupEventArgs e)
|
||||
{
|
||||
// Create the window
|
||||
Window1 window = new Window1();
|
||||
|
||||
// Open the window
|
||||
window.Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
@@ -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)
|
||||
)]
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<UseWPF>true</UseWPF>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
<Window x:Class="WindowsOverview.Window1"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:WindowsOverview"
|
||||
Width="500" Height="165">
|
||||
|
||||
<StackPanel>
|
||||
<Button Click="Button_Click">Message Box</Button>
|
||||
<Button Click="Save_Click">Save file</Button>
|
||||
<Button Click="Open_Click">Open file</Button>
|
||||
<Button Click="Print_Click">Print</Button>
|
||||
</StackPanel>
|
||||
|
||||
</Window>
|
||||
+101
@@ -0,0 +1,101 @@
|
||||
using System.Windows;
|
||||
|
||||
namespace WindowsOverview
|
||||
{
|
||||
public partial class Window1 : Window
|
||||
{
|
||||
public Window1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void Button_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//<YesNoCancel>
|
||||
string messageBoxText = "Do you want to save changes?";
|
||||
string caption = "Word Processor";
|
||||
MessageBoxButton button = MessageBoxButton.YesNoCancel;
|
||||
MessageBoxImage icon = MessageBoxImage.Warning;
|
||||
MessageBoxResult result;
|
||||
|
||||
//<MessageBoxShow>
|
||||
result = MessageBox.Show(messageBoxText, caption, button, icon);
|
||||
//</YesNoCancel>
|
||||
|
||||
switch (result)
|
||||
{
|
||||
case MessageBoxResult.Cancel:
|
||||
// User pressed Cancel
|
||||
break;
|
||||
case MessageBoxResult.Yes:
|
||||
// User pressed Yes
|
||||
break;
|
||||
case MessageBoxResult.No:
|
||||
// User pressed No
|
||||
break;
|
||||
}
|
||||
//</MessageBoxShow>
|
||||
}
|
||||
|
||||
private void Save_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//<SaveFile>
|
||||
// Configure save file dialog box
|
||||
var dialog = new Microsoft.Win32.SaveFileDialog();
|
||||
dialog.FileName = "Document"; // Default file name
|
||||
dialog.DefaultExt = ".txt"; // Default file extension
|
||||
dialog.Filter = "Text documents (.txt)|*.txt"; // Filter files by extension
|
||||
|
||||
// Show save file dialog box
|
||||
bool? result = dialog.ShowDialog();
|
||||
|
||||
// Process save file dialog box results
|
||||
if (result == true)
|
||||
{
|
||||
// Save document
|
||||
string filename = dialog.FileName;
|
||||
}
|
||||
//</SaveFile>
|
||||
}
|
||||
|
||||
private void Open_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//<OpenFile>
|
||||
// Configure open file dialog box
|
||||
var dialog = new Microsoft.Win32.OpenFileDialog();
|
||||
dialog.FileName = "Document"; // Default file name
|
||||
dialog.DefaultExt = ".txt"; // Default file extension
|
||||
dialog.Filter = "Text documents (.txt)|*.txt"; // Filter files by extension
|
||||
|
||||
// Show open file dialog box
|
||||
bool? result = dialog.ShowDialog();
|
||||
|
||||
// Process open file dialog box results
|
||||
if (result == true)
|
||||
{
|
||||
// Open document
|
||||
string filename = dialog.FileName;
|
||||
}
|
||||
//</OpenFile>
|
||||
}
|
||||
|
||||
private void Print_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//<Print>
|
||||
// Configure printer dialog box
|
||||
var dialog = new System.Windows.Controls.PrintDialog();
|
||||
dialog.PageRangeSelection = System.Windows.Controls.PageRangeSelection.AllPages;
|
||||
dialog.UserPageRangeEnabled = true;
|
||||
|
||||
// Show save file dialog box
|
||||
bool? result = dialog.ShowDialog();
|
||||
|
||||
// Process save file dialog box results
|
||||
if (result == true)
|
||||
{
|
||||
// Document was printed
|
||||
}
|
||||
//</Print>
|
||||
}
|
||||
}
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<!-- UAC Manifest Options
|
||||
If you want to change the Windows User Account Control level replace the
|
||||
requestedExecutionLevel node with one of the following.
|
||||
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||
|
||||
Specifying requestedExecutionLevel element will disable file and registry virtualization.
|
||||
Remove this element if your application requires this virtualization for backwards
|
||||
compatibility.
|
||||
-->
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- A list of the Windows versions that this application has been tested on
|
||||
and is designed to work with. Uncomment the appropriate elements
|
||||
and Windows will automatically select the most compatible environment. -->
|
||||
|
||||
<!-- Windows Vista -->
|
||||
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
|
||||
|
||||
<!-- Windows 7 -->
|
||||
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
|
||||
|
||||
<!-- Windows 8 -->
|
||||
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
|
||||
|
||||
<!-- Windows 8.1 -->
|
||||
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
|
||||
|
||||
<!-- Windows 10 -->
|
||||
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
|
||||
|
||||
</application>
|
||||
</compatibility>
|
||||
|
||||
<!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher
|
||||
DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need
|
||||
to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should
|
||||
also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->
|
||||
<!--
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
-->
|
||||
|
||||
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="*"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
|
||||
</assembly>
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<Application x:Class="Application"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:Names"
|
||||
Startup="Application_Startup">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
Class Application
|
||||
|
||||
Private Sub Application_Startup(sender As Object, e As StartupEventArgs)
|
||||
' Create the window
|
||||
Dim window As New Window1
|
||||
|
||||
' Open the window
|
||||
window.Show()
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
Imports System.Windows
|
||||
|
||||
'The ThemeInfo attribute describes where any theme specific and generic resource dictionaries can be found.
|
||||
'1st parameter: where theme specific resource dictionaries are located
|
||||
'(used if a resource is not found in the page,
|
||||
' or application resource dictionaries)
|
||||
|
||||
'2nd parameter: where the generic resource dictionary is located
|
||||
'(used if a resource is not found in the page,
|
||||
'app, and any theme specific resource dictionaries)
|
||||
<Assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)>
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
Public Class Class1
|
||||
|
||||
End Class
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<RootNamespace>WindowsOverview</RootNamespace>
|
||||
<UseWPF>true</UseWPF>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Import Include="System.Windows" />
|
||||
<Import Include="System.Windows.Controls" />
|
||||
<Import Include="System.Windows.Data" />
|
||||
<Import Include="System.Windows.Documents" />
|
||||
<Import Include="System.Windows.Input" />
|
||||
<Import Include="System.Windows.Media" />
|
||||
<Import Include="System.Windows.Media.Imaging" />
|
||||
<Import Include="System.Windows.Navigation" />
|
||||
<Import Include="System.Windows.Shapes" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
<Window x:Class="Window1"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:WindowsOverview"
|
||||
mc:Ignorable="d"
|
||||
Title="Names" Height="180" Width="260">
|
||||
<StackPanel>
|
||||
<Button Click="Button_Click">Message Box</Button>
|
||||
<Button Click="Save_Click">Save file</Button>
|
||||
<Button Click="Open_Click">Open file</Button>
|
||||
<Button Click="Print_Click">Print</Button>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
Public Class Window1
|
||||
Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
|
||||
'<YesNoCancel>
|
||||
Dim messageBoxText As String = "Do you want to save changes?"
|
||||
Dim caption As String = "Word Processor"
|
||||
Dim Button As MessageBoxButton = MessageBoxButton.YesNoCancel
|
||||
Dim Icon As MessageBoxImage = MessageBoxImage.Warning
|
||||
Dim result As MessageBoxResult
|
||||
|
||||
'<MessageBoxShow>
|
||||
result = MessageBox.Show(messageBoxText, caption, Button, Icon)
|
||||
'</YesNoCancel>
|
||||
|
||||
Select Case result
|
||||
Case MessageBoxResult.Cancel
|
||||
' User pressed Cancel
|
||||
Case MessageBoxResult.Yes
|
||||
' User pressed Yes
|
||||
Case MessageBoxResult.No
|
||||
' User pressed No
|
||||
End Select
|
||||
'</MessageBoxShow>
|
||||
End Sub
|
||||
|
||||
Private Sub Save_Click(sender As Object, e As RoutedEventArgs)
|
||||
'<SaveFile>
|
||||
' Configure save file dialog box
|
||||
Dim dialog As New Microsoft.Win32.SaveFileDialog()
|
||||
dialog.FileName = "Document" ' Default file name
|
||||
dialog.DefaultExt = ".txt" ' Default file extension
|
||||
dialog.Filter = "Text documents (.txt)|*.txt" ' Filter files by extension
|
||||
|
||||
' Show save file dialog box
|
||||
Dim result As Boolean? = dialog.ShowDialog()
|
||||
|
||||
' Process save file dialog box results
|
||||
If result = True Then
|
||||
' Save document
|
||||
Dim filename As String = dialog.FileName
|
||||
End If
|
||||
'</SaveFile>
|
||||
End Sub
|
||||
|
||||
Private Sub Open_Click(sender As Object, e As RoutedEventArgs)
|
||||
'<OpenFile>
|
||||
' Configure open file dialog box
|
||||
Dim dialog As New Microsoft.Win32.OpenFileDialog()
|
||||
dialog.FileName = "Document" ' Default file name
|
||||
dialog.DefaultExt = ".txt" ' Default file extension
|
||||
dialog.Filter = "Text documents (.txt)|*.txt" ' Filter files by extension
|
||||
|
||||
' Show open file dialog box
|
||||
Dim result As Boolean? = dialog.ShowDialog()
|
||||
|
||||
' Process open file dialog box results
|
||||
If result = True Then
|
||||
' Open document
|
||||
Dim filename As String = dialog.FileName
|
||||
End If
|
||||
'</OpenFile>
|
||||
End Sub
|
||||
|
||||
Private Sub Print_Click(sender As Object, e As RoutedEventArgs)
|
||||
'<Print>
|
||||
' Configure printer dialog box
|
||||
Dim dialog As New System.Windows.Controls.PrintDialog()
|
||||
dialog.PageRangeSelection = System.Windows.Controls.PageRangeSelection.AllPages
|
||||
dialog.UserPageRangeEnabled = True
|
||||
|
||||
' Show save file dialog box
|
||||
Dim result As Boolean? = dialog.ShowDialog()
|
||||
|
||||
' Process save file dialog box results
|
||||
If result = True Then
|
||||
' Document was printed
|
||||
End If
|
||||
'</Print>
|
||||
End Sub
|
||||
End Class
|
||||
@@ -0,0 +1,9 @@
|
||||
<Application x:Class="WindowsOverview.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:WindowsOverview"
|
||||
Startup="Application_Startup">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
using System.Windows;
|
||||
|
||||
namespace WindowsOverview
|
||||
{
|
||||
public partial class App : Application
|
||||
{
|
||||
private void Application_Startup(object sender, StartupEventArgs e)
|
||||
{
|
||||
// Create the window
|
||||
Window1 window = new Window1();
|
||||
|
||||
// Open the window
|
||||
window.Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
@@ -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)
|
||||
)]
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<UseWPF>true</UseWPF>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
<Window x:Class="WindowsOverview.Window1"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:WindowsOverview"
|
||||
Width="500" Height="165">
|
||||
|
||||
<StackPanel>
|
||||
<Button Click="Button_Click">Message Box</Button>
|
||||
<Button Click="Button2_Click">Message Box screenshot</Button>
|
||||
<Button Click="Alert_Click">Alert</Button>
|
||||
<Button Click="Warning_Click">Warning</Button>
|
||||
<Button Click="Prompt_Click">Prompt</Button>
|
||||
</StackPanel>
|
||||
|
||||
</Window>
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
using System.Windows;
|
||||
|
||||
namespace WindowsOverview
|
||||
{
|
||||
public partial class Window1 : Window
|
||||
{
|
||||
public Window1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void Button_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//<YesNoCancel>
|
||||
string messageBoxText = "Do you want to save changes?";
|
||||
string caption = "Word Processor";
|
||||
MessageBoxButton button = MessageBoxButton.YesNoCancel;
|
||||
MessageBoxImage icon = MessageBoxImage.Warning;
|
||||
MessageBoxResult result;
|
||||
|
||||
//<MessageBoxShow>
|
||||
result = MessageBox.Show(messageBoxText, caption, button, icon, MessageBoxResult.Yes);
|
||||
//</YesNoCancel>
|
||||
|
||||
switch (result)
|
||||
{
|
||||
case MessageBoxResult.Cancel:
|
||||
// User pressed Cancel
|
||||
break;
|
||||
case MessageBoxResult.Yes:
|
||||
// User pressed Yes
|
||||
break;
|
||||
case MessageBoxResult.No:
|
||||
// User pressed No
|
||||
break;
|
||||
}
|
||||
//</MessageBoxShow>
|
||||
}
|
||||
|
||||
private void Button2_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
MessageBox.Show("Message to display to the user", "Window caption", MessageBoxButton.OK, MessageBoxImage.Question, MessageBoxResult.OK, MessageBoxOptions.RightAlign);
|
||||
}
|
||||
|
||||
private void Alert_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//<AlertSimple>
|
||||
MessageBox.Show("Unable to save file, try again.");
|
||||
//</AlertSimple>
|
||||
//<Alert>
|
||||
MessageBox.Show("Unable to save file, try again.", "Save error", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
//</Alert>
|
||||
}
|
||||
|
||||
private void Warning_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//<Warning>
|
||||
MessageBox.Show("If you close the next window without saving, your changes will be lost.", "Configuration", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
//</Warning>
|
||||
}
|
||||
|
||||
private void Prompt_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//<Prompt>
|
||||
if (MessageBox.Show("If the file save fails, do you want to automatically try again?",
|
||||
"Save file",
|
||||
MessageBoxButton.YesNo,
|
||||
MessageBoxImage.Question) == MessageBoxResult.Yes)
|
||||
{
|
||||
// Do something here
|
||||
}
|
||||
//</Prompt>
|
||||
}
|
||||
}
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<!-- UAC Manifest Options
|
||||
If you want to change the Windows User Account Control level replace the
|
||||
requestedExecutionLevel node with one of the following.
|
||||
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||
|
||||
Specifying requestedExecutionLevel element will disable file and registry virtualization.
|
||||
Remove this element if your application requires this virtualization for backwards
|
||||
compatibility.
|
||||
-->
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- A list of the Windows versions that this application has been tested on
|
||||
and is designed to work with. Uncomment the appropriate elements
|
||||
and Windows will automatically select the most compatible environment. -->
|
||||
|
||||
<!-- Windows Vista -->
|
||||
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
|
||||
|
||||
<!-- Windows 7 -->
|
||||
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
|
||||
|
||||
<!-- Windows 8 -->
|
||||
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
|
||||
|
||||
<!-- Windows 8.1 -->
|
||||
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
|
||||
|
||||
<!-- Windows 10 -->
|
||||
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
|
||||
|
||||
</application>
|
||||
</compatibility>
|
||||
|
||||
<!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher
|
||||
DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need
|
||||
to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should
|
||||
also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->
|
||||
<!--
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
-->
|
||||
|
||||
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="*"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
|
||||
</assembly>
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<Application x:Class="Application"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:Names"
|
||||
Startup="Application_Startup">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
Class Application
|
||||
|
||||
Private Sub Application_Startup(sender As Object, e As StartupEventArgs)
|
||||
' Create the window
|
||||
Dim window As New Window1
|
||||
|
||||
' Open the window
|
||||
window.Show()
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
Imports System.Windows
|
||||
|
||||
'The ThemeInfo attribute describes where any theme specific and generic resource dictionaries can be found.
|
||||
'1st parameter: where theme specific resource dictionaries are located
|
||||
'(used if a resource is not found in the page,
|
||||
' or application resource dictionaries)
|
||||
|
||||
'2nd parameter: where the generic resource dictionary is located
|
||||
'(used if a resource is not found in the page,
|
||||
'app, and any theme specific resource dictionaries)
|
||||
<Assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)>
|
||||
@@ -0,0 +1,3 @@
|
||||
Public Class Class1
|
||||
|
||||
End Class
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<RootNamespace>WindowsOverview</RootNamespace>
|
||||
<UseWPF>true</UseWPF>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Import Include="System.Windows" />
|
||||
<Import Include="System.Windows.Controls" />
|
||||
<Import Include="System.Windows.Data" />
|
||||
<Import Include="System.Windows.Documents" />
|
||||
<Import Include="System.Windows.Input" />
|
||||
<Import Include="System.Windows.Media" />
|
||||
<Import Include="System.Windows.Media.Imaging" />
|
||||
<Import Include="System.Windows.Navigation" />
|
||||
<Import Include="System.Windows.Shapes" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,16 @@
|
||||
<Window x:Class="Window1"
|
||||
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:WindowsOverview"
|
||||
mc:Ignorable="d"
|
||||
Title="Names" Height="180" Width="260">
|
||||
<StackPanel>
|
||||
<Button Click="Button_Click">Message Box</Button>
|
||||
<Button Click="Button2_Click">Message Box screenshot</Button>
|
||||
<Button Click="Alert_Click">Alert</Button>
|
||||
<Button Click="Warning_Click">Warning</Button>
|
||||
<Button Click="Prompt_Click">Prompt</Button>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
Public Class Window1
|
||||
Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
|
||||
'<YesNoCancel>
|
||||
Dim messageBoxText As String = "Do you want to save changes?"
|
||||
Dim caption As String = "Word Processor"
|
||||
Dim Button As MessageBoxButton = MessageBoxButton.YesNoCancel
|
||||
Dim Icon As MessageBoxImage = MessageBoxImage.Warning
|
||||
Dim result As MessageBoxResult
|
||||
|
||||
'<MessageBoxShow>
|
||||
result = MessageBox.Show(messageBoxText, caption, Button, Icon, MessageBoxResult.Yes)
|
||||
'</YesNoCancel>
|
||||
|
||||
Select Case result
|
||||
Case MessageBoxResult.Cancel
|
||||
' User pressed Cancel
|
||||
Case MessageBoxResult.Yes
|
||||
' User pressed Yes
|
||||
Case MessageBoxResult.No
|
||||
' User pressed No
|
||||
End Select
|
||||
'</MessageBoxShow>
|
||||
End Sub
|
||||
|
||||
Private Sub Button2_Click(sender As Object, e As RoutedEventArgs)
|
||||
MessageBox.Show("Message to display to the user", "Window caption", MessageBoxButton.OK, MessageBoxImage.Question, MessageBoxResult.OK, MessageBoxOptions.RightAlign)
|
||||
End Sub
|
||||
|
||||
Private Sub Alert_Click(sender As Object, e As RoutedEventArgs)
|
||||
'<AlertSimple>
|
||||
MessageBox.Show("Unable to save file, try again.")
|
||||
'</AlertSimple>
|
||||
'<Alert>
|
||||
MessageBox.Show("Unable to save file, try again.", "Save error", MessageBoxButton.OK, MessageBoxImage.Error)
|
||||
'</Alert>
|
||||
End Sub
|
||||
|
||||
Private Sub Warning_Click(sender As Object, e As RoutedEventArgs)
|
||||
'<Warning>
|
||||
MessageBox.Show("If you close the next window without saving, your changes will be lost.", "Configuration", MessageBoxButton.OK, MessageBoxImage.Warning)
|
||||
'</Warning>
|
||||
End Sub
|
||||
|
||||
Private Sub Prompt_Click(sender As Object, e As RoutedEventArgs)
|
||||
'<Prompt>
|
||||
If MessageBox.Show("If the file save fails, do you want to automatically try again?",
|
||||
"Save file",
|
||||
MessageBoxButton.YesNo,
|
||||
MessageBoxImage.Question) = MessageBoxResult.Yes Then
|
||||
|
||||
' Do something here
|
||||
|
||||
End If
|
||||
'</Prompt>
|
||||
End Sub
|
||||
End Class
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<Application x:Class="DisplayWindows.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:DisplayWindows"
|
||||
Startup="Application_Startup">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
using System.Windows;
|
||||
|
||||
namespace DisplayWindows
|
||||
{
|
||||
public partial class App : Application
|
||||
{
|
||||
private void Application_Startup(object sender, StartupEventArgs e)
|
||||
{
|
||||
// Create the window
|
||||
Window1 window = new Window1();
|
||||
|
||||
// Open the window
|
||||
window.Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
@@ -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)
|
||||
)]
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<UseWPF>true</UseWPF>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user