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]>
@@ -0,0 +1,14 @@
|
||||
// // Copyright (c) Microsoft. All rights reserved.
|
||||
// // Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
using System.Windows;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for App.xaml
|
||||
/// </summary>
|
||||
public partial class App : Application
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<!--<AppResources>-->
|
||||
<Application x:Class="IntroToStylingAndTemplating.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:IntroToStylingAndTemplating"
|
||||
StartupUri="WindowExplicitStyle.xaml">
|
||||
<Application.Resources>
|
||||
<ResourceDictionary>
|
||||
|
||||
<Style x:Key="Header1" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="15" />
|
||||
<Setter Property="FontWeight" Value="ExtraBold" />
|
||||
</Style>
|
||||
|
||||
</ResourceDictionary>
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
<!--</AppResources>-->
|
||||
@@ -0,0 +1,29 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<RootNamespace>IntroToStylingAndTemplating</RootNamespace>
|
||||
<UseWpf>true</UseWpf>
|
||||
<AssemblyName>IntroToStylingAndTemplating</AssemblyName>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="images\flower1.jpg">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="images\flower2.jpg">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="images\leaf1.jpg">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="images\leaf2.jpg">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="images\winter1.jpg">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,27 @@
|
||||
// // Copyright (c) Microsoft. All rights reserved.
|
||||
// // Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
using System.Windows;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for MainWindow.xaml
|
||||
/// </summary>
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
private PhotoList _photos;
|
||||
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void WindowLoaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
_photos = (PhotoList) (Resources["MyPhotos"] as ObjectDataProvider).Data;
|
||||
_photos.Path = "images";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.MainWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Style Intro Sample" Loaded="WindowLoaded" SizeToContent="WidthAndHeight">
|
||||
<Window.Resources>
|
||||
<ObjectDataProvider x:Key="MyPhotos" ObjectType="{x:Type local:PhotoList}"/>
|
||||
|
||||
<!--A Style that affects all TextBlocks-->
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="HorizontalAlignment" Value="Center" />
|
||||
<Setter Property="FontFamily" Value="Comic Sans MS"/>
|
||||
<Setter Property="FontSize" Value="14"/>
|
||||
</Style>
|
||||
|
||||
<!--A Style that extends the previous TextBlock Style-->
|
||||
<!--This is a "named style" with an x:Key of TitleText-->
|
||||
<Style BasedOn="{StaticResource {x:Type TextBlock}}"
|
||||
TargetType="TextBlock"
|
||||
x:Key="TitleText">
|
||||
<Setter Property="FontSize" Value="26"/>
|
||||
<Setter Property="Foreground">
|
||||
<Setter.Value>
|
||||
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStop Offset="0.0" Color="#90DDDD" />
|
||||
<GradientStop Offset="1.0" Color="#5BFFFF" />
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<!--Horizontal ListBox Control Template-->
|
||||
<Style TargetType="ListBox">
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="ListBox">
|
||||
<Border CornerRadius="5" Background="{TemplateBinding ListBox.Background}">
|
||||
<ScrollViewer HorizontalScrollBarVisibility="Auto">
|
||||
<StackPanel Orientation="Horizontal"
|
||||
VerticalAlignment="Center"
|
||||
HorizontalAlignment="Center"
|
||||
IsItemsHost="True"/>
|
||||
</ScrollViewer>
|
||||
</Border>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<!--DataTemplate to display Photos as images
|
||||
instead of text strings of Paths-->
|
||||
<DataTemplate DataType="{x:Type local:Photo}">
|
||||
<Border Margin="3">
|
||||
<Image Source="{Binding Source}"/>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
|
||||
<Style TargetType="ListBoxItem">
|
||||
<Setter Property="Opacity" Value="0.5" />
|
||||
<Setter Property="MaxHeight" Value="75" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Trigger.Setters>
|
||||
<Setter Property="Opacity" Value="1.0" />
|
||||
</Trigger.Setters>
|
||||
</Trigger>
|
||||
<EventTrigger RoutedEvent="Mouse.MouseEnter">
|
||||
<EventTrigger.Actions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation
|
||||
Duration="0:0:0.2"
|
||||
Storyboard.TargetProperty="MaxHeight"
|
||||
To="90" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger.Actions>
|
||||
</EventTrigger>
|
||||
<EventTrigger RoutedEvent="Mouse.MouseLeave">
|
||||
<EventTrigger.Actions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation
|
||||
Duration="0:0:1"
|
||||
Storyboard.TargetProperty="MaxHeight" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger.Actions>
|
||||
</EventTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
|
||||
</Window.Resources>
|
||||
<StackPanel Margin="10">
|
||||
<TextBlock Style="{StaticResource TitleText}" Name="textblock1">My Pictures</TextBlock>
|
||||
<TextBlock>Check out my new pictures!</TextBlock>
|
||||
|
||||
<ListBox ItemsSource="{Binding Source={StaticResource MyPhotos}}"
|
||||
Background="Silver" Width="600" Margin="10" SelectedIndex="0"/>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
@@ -0,0 +1,19 @@
|
||||
// // Copyright (c) Microsoft. All rights reserved.
|
||||
// // Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
// <PhotoClass>
|
||||
public class Photo
|
||||
{
|
||||
public Photo(string path)
|
||||
{
|
||||
Source = path;
|
||||
}
|
||||
|
||||
public string Source { get; }
|
||||
|
||||
public override string ToString() => Source;
|
||||
}
|
||||
// </PhotoClass>
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
// // Copyright (c) Microsoft. All rights reserved.
|
||||
// // Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
using System.Collections.ObjectModel;
|
||||
using System.IO;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
public class PhotoList : ObservableCollection<Photo>
|
||||
{
|
||||
private DirectoryInfo _directory;
|
||||
|
||||
public PhotoList()
|
||||
{
|
||||
}
|
||||
|
||||
public PhotoList(string path) : this(new DirectoryInfo(path))
|
||||
{
|
||||
}
|
||||
|
||||
public PhotoList(DirectoryInfo directory)
|
||||
{
|
||||
_directory = directory;
|
||||
Update();
|
||||
}
|
||||
|
||||
public string Path
|
||||
{
|
||||
set
|
||||
{
|
||||
_directory = new DirectoryInfo(value);
|
||||
Update();
|
||||
}
|
||||
get { return _directory.FullName; }
|
||||
}
|
||||
|
||||
public DirectoryInfo Directory
|
||||
{
|
||||
set
|
||||
{
|
||||
_directory = value;
|
||||
Update();
|
||||
}
|
||||
get { return _directory; }
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
foreach (var f in _directory.GetFiles("*.jpg"))
|
||||
{
|
||||
Add(new Photo(f.FullName));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Window1" Height="450" Width="800">
|
||||
<!--<SnippetDefaultTextBlockStyle>-->
|
||||
<Window.Resources>
|
||||
<!--A Style that affects all TextBlocks-->
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="HorizontalAlignment" Value="Center" />
|
||||
<Setter Property="FontFamily" Value="Comic Sans MS"/>
|
||||
<Setter Property="FontSize" Value="14"/>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
<!--</SnippetDefaultTextBlockStyle>-->
|
||||
<!--<SnippetTextBlocks>-->
|
||||
<StackPanel>
|
||||
<TextBlock>My Pictures</TextBlock>
|
||||
<TextBlock>Check out my new pictures!</TextBlock>
|
||||
</StackPanel>
|
||||
<!--</SnippetTextBlocks>-->
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window1.xaml
|
||||
/// </summary>
|
||||
public partial class Window1 : Window
|
||||
{
|
||||
public Window1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Window2" Height="450" Width="800" Loaded="Window_Loaded">
|
||||
<!--<SnippetDefaultTextBlockStyleBasedOn>-->
|
||||
<Window.Resources>
|
||||
<!-- .... other resources .... -->
|
||||
|
||||
<!--A Style that affects all TextBlocks-->
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="HorizontalAlignment" Value="Center" />
|
||||
<Setter Property="FontFamily" Value="Comic Sans MS"/>
|
||||
<Setter Property="FontSize" Value="14"/>
|
||||
</Style>
|
||||
|
||||
<!--A Style that extends the previous TextBlock Style with an x:Key of TitleText-->
|
||||
<Style BasedOn="{StaticResource {x:Type TextBlock}}"
|
||||
TargetType="TextBlock"
|
||||
x:Key="TitleText">
|
||||
<Setter Property="FontSize" Value="26"/>
|
||||
<Setter Property="Foreground">
|
||||
<Setter.Value>
|
||||
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStop Offset="0.0" Color="#90DDDD" />
|
||||
<GradientStop Offset="1.0" Color="#5BFFFF" />
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
<!--</SnippetDefaultTextBlockStyleBasedOn>-->
|
||||
<!--<SnippetTextBlocksExplicit>-->
|
||||
<StackPanel>
|
||||
<TextBlock Style="{StaticResource TitleText}" Name="textblock1">My Pictures</TextBlock>
|
||||
<TextBlock>Check out my new pictures!</TextBlock>
|
||||
</StackPanel>
|
||||
<!--</SnippetTextBlocksExplicit>-->
|
||||
</Window>
|
||||
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window2.xaml
|
||||
/// </summary>
|
||||
public partial class Window2 : Window
|
||||
{
|
||||
public Window2()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void Window_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// <SnippetSetStyleCode>
|
||||
textblock1.Style = (Style)Resources["TitleText"];
|
||||
// </SnippetSetStyleCode>
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.Window3"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Window3" Height="450" Width="800">
|
||||
<Window.Resources>
|
||||
<ObjectDataProvider x:Key="MyPhotos" ObjectType="{x:Type local:PhotoList}"/>
|
||||
</Window.Resources>
|
||||
<StackPanel>
|
||||
<TextBlock>My Pictures</TextBlock>
|
||||
<TextBlock>Check out my new pictures!</TextBlock>
|
||||
<!--<SnippetListBox>-->
|
||||
<ListBox ItemsSource="{Binding Source={StaticResource MyPhotos}}"
|
||||
Background="Silver" Width="600" Margin="10" SelectedIndex="0"/>
|
||||
<!--</SnippetListBox>-->
|
||||
</StackPanel>
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window3.xaml
|
||||
/// </summary>
|
||||
public partial class Window3 : Window
|
||||
{
|
||||
public Window3()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.Window4"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Window4" Height="450" Width="800">
|
||||
<!--<SnippetDataTemplate>-->
|
||||
<Window.Resources>
|
||||
<!-- .... other resources .... -->
|
||||
|
||||
<!--DataTemplate to display Photos as images
|
||||
instead of text strings of Paths-->
|
||||
<DataTemplate DataType="{x:Type local:Photo}">
|
||||
<Border Margin="3">
|
||||
<Image Source="{Binding Source}"/>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</Window.Resources>
|
||||
<!--</SnippetDataTemplate>-->
|
||||
<StackPanel>
|
||||
<TextBlock>My Pictures</TextBlock>
|
||||
<TextBlock>Check out my new pictures!</TextBlock>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window4.xaml
|
||||
/// </summary>
|
||||
public partial class Window4 : Window
|
||||
{
|
||||
public Window4()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.Window5"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Window5" Height="450" Width="800">
|
||||
<!--<SnippetPropertyTrigger>-->
|
||||
<Window.Resources>
|
||||
<!-- .... other resources .... -->
|
||||
|
||||
<Style TargetType="ListBoxItem">
|
||||
<Setter Property="Opacity" Value="0.5" />
|
||||
<Setter Property="MaxHeight" Value="75" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Trigger.Setters>
|
||||
<Setter Property="Opacity" Value="1.0" />
|
||||
</Trigger.Setters>
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
<!--</SnippetPropertyTrigger>-->
|
||||
<StackPanel>
|
||||
<TextBlock>My Pictures</TextBlock>
|
||||
<TextBlock>Check out my new pictures!</TextBlock>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window5.xaml
|
||||
/// </summary>
|
||||
public partial class Window5 : Window
|
||||
{
|
||||
public Window5()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.Window6"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Window6" Height="450" Width="800">
|
||||
<Window.Resources>
|
||||
<!-- .... other resources .... -->
|
||||
|
||||
<Style TargetType="ListBoxItem">
|
||||
<Setter Property="Opacity" Value="0.5" />
|
||||
<Setter Property="MaxHeight" Value="75" />
|
||||
<!--<SnippetStyleEventTriggers>-->
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Trigger.Setters>
|
||||
<Setter Property="Opacity" Value="1.0" />
|
||||
</Trigger.Setters>
|
||||
</Trigger>
|
||||
<EventTrigger RoutedEvent="Mouse.MouseEnter">
|
||||
<EventTrigger.Actions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation
|
||||
Duration="0:0:0.2"
|
||||
Storyboard.TargetProperty="MaxHeight"
|
||||
To="90" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger.Actions>
|
||||
</EventTrigger>
|
||||
<EventTrigger RoutedEvent="Mouse.MouseLeave">
|
||||
<EventTrigger.Actions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation
|
||||
Duration="0:0:1"
|
||||
Storyboard.TargetProperty="MaxHeight" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger.Actions>
|
||||
</EventTrigger>
|
||||
</Style.Triggers>
|
||||
<!--</SnippetStyleEventTriggers>-->
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
<StackPanel>
|
||||
<TextBlock>My Pictures</TextBlock>
|
||||
<TextBlock>Check out my new pictures!</TextBlock>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window6.xaml
|
||||
/// </summary>
|
||||
public partial class Window6 : Window
|
||||
{
|
||||
public Window6()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.ExplicitStyle"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Height="100" Width="300"
|
||||
Title="Style Intro Sample">
|
||||
<!--<ExplicitStyleDeclare>-->
|
||||
<Window.Resources>
|
||||
<Style x:Key="TitleText" TargetType="TextBlock">
|
||||
<Setter Property="HorizontalAlignment" Value="Center" />
|
||||
<Setter Property="FontFamily" Value="Comic Sans MS"/>
|
||||
<Setter Property="FontSize" Value="14"/>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
<!--</ExplicitStyleDeclare>-->
|
||||
<!--<ExplicitStyleReference>-->
|
||||
<StackPanel>
|
||||
<TextBlock Style="{StaticResource TitleText}">My Pictures</TextBlock>
|
||||
<TextBlock>Check out my new pictures!</TextBlock>
|
||||
</StackPanel>
|
||||
<!--</ExplicitStyleReference>-->
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for ExplicitStyle.xaml
|
||||
/// </summary>
|
||||
public partial class ExplicitStyle : Window
|
||||
{
|
||||
public ExplicitStyle()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<!--<WindowResources>-->
|
||||
<Window x:Class="IntroToStylingAndTemplating.WindowSingleResource"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="WindowSingleResource" Height="450" Width="800">
|
||||
<Window.Resources>
|
||||
|
||||
<Style x:Key="Header1" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="15" />
|
||||
<Setter Property="FontWeight" Value="ExtraBold" />
|
||||
</Style>
|
||||
|
||||
</Window.Resources>
|
||||
<Grid />
|
||||
</Window>
|
||||
<!--</WindowResources>-->
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for WindowSingleResource.xaml
|
||||
/// </summary>
|
||||
public partial class WindowSingleResource : Window
|
||||
{
|
||||
public WindowSingleResource()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 152 KiB |
|
After Width: | Height: | Size: 102 KiB |
@@ -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:IntroToStylingAndTemplating"
|
||||
StartupUri="MainWindow.xaml">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
@@ -0,0 +1,6 @@
|
||||
Class Application
|
||||
|
||||
' Application-level events, such as Startup, Exit, and DispatcherUnhandledException
|
||||
' can be handled in this file.
|
||||
|
||||
End Class
|
||||
@@ -0,0 +1,33 @@
|
||||
<Window x:Class="MainWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="MainWindow" Height="450" Width="800" Loaded="Window_Loaded">
|
||||
<Window.Resources>
|
||||
<!-- .... other resources .... -->
|
||||
|
||||
<!--A Style that extends the previous TextBlock Style-->
|
||||
<!--This is a "named style" with an x:Key of TitleText-->
|
||||
<Style BasedOn="{StaticResource {x:Type TextBlock}}"
|
||||
TargetType="TextBlock"
|
||||
x:Key="TitleText">
|
||||
<Setter Property="FontSize" Value="26"/>
|
||||
<Setter Property="Foreground">
|
||||
<Setter.Value>
|
||||
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStop Offset="0.0" Color="#90DDDD" />
|
||||
<GradientStop Offset="1.0" Color="#5BFFFF" />
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
<Grid>
|
||||
<TextBlock Name="textblock1">My Pictures</TextBlock>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,7 @@
|
||||
Class MainWindow
|
||||
Private Sub Window_Loaded(sender As Object, e As Windows.RoutedEventArgs)
|
||||
'<SnippetSetStyleCode>
|
||||
textblock1.Style = CType(Resources("TitleText"), Windows.Style)
|
||||
'</SnippetSetStyleCode>
|
||||
End Sub
|
||||
End Class
|
||||
@@ -0,0 +1,13 @@
|
||||
' <PhotoClass>
|
||||
Public Class Photo
|
||||
Sub New(ByVal path As String)
|
||||
Source = path
|
||||
End Sub
|
||||
|
||||
Public ReadOnly Property Source As String
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Return Source
|
||||
End Function
|
||||
End Class
|
||||
' </PhotoClass>
|
||||
@@ -0,0 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<RootNamespace>IntroToStylingAndTemplating</RootNamespace>
|
||||
<UseWpf>true</UseWpf>
|
||||
<AssemblyName>IntroToStylingAndTemplating</AssemblyName>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,14 @@
|
||||
// // Copyright (c) Microsoft. All rights reserved.
|
||||
// // Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
using System.Windows;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for App.xaml
|
||||
/// </summary>
|
||||
public partial class App : Application
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<!--<AppResources>-->
|
||||
<Application x:Class="IntroToStylingAndTemplating.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:IntroToStylingAndTemplating"
|
||||
StartupUri="MainWindow.xaml">
|
||||
<Application.Resources>
|
||||
<ResourceDictionary>
|
||||
|
||||
<Style x:Key="Header1" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="15" />
|
||||
<Setter Property="FontWeight" Value="ExtraBold" />
|
||||
</Style>
|
||||
|
||||
</ResourceDictionary>
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
<!--</AppResources>-->
|
||||
@@ -0,0 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<RootNamespace>IntroToStylingAndTemplating</RootNamespace>
|
||||
<UseWpf>true</UseWpf>
|
||||
<AssemblyName>IntroToStylingAndTemplating</AssemblyName>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,28 @@
|
||||
// // Copyright (c) Microsoft. All rights reserved.
|
||||
// // Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
using System.Windows;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for MainWindow.xaml
|
||||
/// </summary>
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void WindowLoaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
private void Button_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
MessageBox.Show("Clicked");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.MainWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Template Intro Sample" Loaded="WindowLoaded" SizeToContent="WidthAndHeight" MinWidth="250">
|
||||
<Window.Resources>
|
||||
<ControlTemplate x:Key="roundbutton" TargetType="Button">
|
||||
<Grid>
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup Name="CommonStates">
|
||||
<VisualState Name="Normal">
|
||||
<Storyboard>
|
||||
<ColorAnimation Storyboard.TargetName="backgroundElement"
|
||||
Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"
|
||||
To="{TemplateBinding Background}"
|
||||
Duration="0:0:0.3"/>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState Name="MouseOver">
|
||||
<Storyboard>
|
||||
<ColorAnimation Storyboard.TargetName="backgroundElement"
|
||||
Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"
|
||||
To="Yellow"
|
||||
Duration="0:0:0.3"/>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
<Ellipse Name="backgroundElement" Fill="{TemplateBinding Background}" Stroke="{TemplateBinding Foreground}" />
|
||||
<ContentPresenter x:Name="contentPresenter" HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
</Window.Resources>
|
||||
<StackPanel Margin="10">
|
||||
<Label>Unstyled Button</Label>
|
||||
<Button>Button 1</Button>
|
||||
<Label>Rounded Button</Label>
|
||||
<Button Template="{StaticResource roundbutton}" Width="65" Height="65" Click="Button_Click">Button 2</Button>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
@@ -0,0 +1,19 @@
|
||||
<!--<SnippetInitialWhole>-->
|
||||
<Window x:Class="IntroToStylingAndTemplating.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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Template Intro Sample" SizeToContent="WidthAndHeight" MinWidth="250">
|
||||
<!--<SnippetInitial>-->
|
||||
<StackPanel Margin="10">
|
||||
<Label>Unstyled Button</Label>
|
||||
<Button>Button 1</Button>
|
||||
<Label>Rounded Button</Label>
|
||||
<Button>Button 2</Button>
|
||||
</StackPanel>
|
||||
<!--</SnippetInitial>-->
|
||||
</Window>
|
||||
<!--</SnippetInitialWhole>-->
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window1.xaml
|
||||
/// </summary>
|
||||
public partial class Window1 : Window
|
||||
{
|
||||
public Window1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<!--<SnippetWindowResStart>-->
|
||||
<Window x:Class="IntroToStylingAndTemplating.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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Template Intro Sample" SizeToContent="WidthAndHeight" MinWidth="250">
|
||||
<Window.Resources>
|
||||
|
||||
</Window.Resources>
|
||||
<StackPanel Margin="10">
|
||||
<Label>Unstyled Button</Label>
|
||||
<Button>Button 1</Button>
|
||||
<Label>Rounded Button</Label>
|
||||
<Button>Button 2</Button>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
<!--</SnippetWindowResStart>-->
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window2.xaml
|
||||
/// </summary>
|
||||
public partial class Window2 : Window
|
||||
{
|
||||
public Window2()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.Window3"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Window3" SizeToContent="WidthAndHeight" MinWidth="250">
|
||||
<Window.Resources>
|
||||
<!--<SnippetControlTemplate>-->
|
||||
<ControlTemplate x:Key="roundbutton" TargetType="Button">
|
||||
<Grid>
|
||||
<Ellipse Fill="{TemplateBinding Background}" Stroke="{TemplateBinding Foreground}" />
|
||||
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
<!--</SnippetControlTemplate>-->
|
||||
</Window.Resources>
|
||||
<Grid>
|
||||
<!--<SnippetStyledButton>-->
|
||||
<StackPanel Margin="10">
|
||||
<Label>Unstyled Button</Label>
|
||||
<Button>Button 1</Button>
|
||||
<Label>Rounded Button</Label>
|
||||
<Button Template="{StaticResource roundbutton}">Button 2</Button>
|
||||
</StackPanel>
|
||||
<!--</SnippetStyledButton>-->
|
||||
|
||||
<!--<SnippetStyledButtonSize>-->
|
||||
<StackPanel Margin="10">
|
||||
<Label>Unstyled Button</Label>
|
||||
<Button>Button 1</Button>
|
||||
<Label>Rounded Button</Label>
|
||||
<Button Template="{StaticResource roundbutton}" Width="65" Height="65">Button 2</Button>
|
||||
</StackPanel>
|
||||
<!--</SnippetStyledButtonSize>-->
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window3.xaml
|
||||
/// </summary>
|
||||
public partial class Window3 : Window
|
||||
{
|
||||
public Window3()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.Window4"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Window4" SizeToContent="WidthAndHeight" MinWidth="250">
|
||||
<Window.Resources>
|
||||
<!--<SnippetControlTemplate>-->
|
||||
<ControlTemplate x:Key="roundbutton" TargetType="Button">
|
||||
<Grid>
|
||||
<!--<SnippetEllipseName>-->
|
||||
<Ellipse x:Name="backgroundElement" Fill="{TemplateBinding Background}" Stroke="{TemplateBinding Foreground}" />
|
||||
<!--</SnippetEllipseName>-->
|
||||
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||
</Grid>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsMouseOver" Value="true">
|
||||
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
<!--</SnippetControlTemplate>-->
|
||||
</Window.Resources>
|
||||
<Grid>
|
||||
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window4.xaml
|
||||
/// </summary>
|
||||
public partial class Window4 : Window
|
||||
{
|
||||
public Window4()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.Window5"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Window5" SizeToContent="WidthAndHeight" MinWidth="250">
|
||||
<Window.Resources>
|
||||
<ControlTemplate x:Key="roundbuttonUnneeded" TargetType="Button">
|
||||
<Grid>
|
||||
<Ellipse x:Name="backgroundElement" Fill="{TemplateBinding Background}" Stroke="{TemplateBinding Foreground}" />
|
||||
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||
</Grid>
|
||||
<ControlTemplate.Triggers>
|
||||
<!--<SnippetMouseOver>-->
|
||||
<Trigger Property="IsMouseOver" Value="true">
|
||||
<Setter Property="Fill" TargetName="backgroundElement" Value="AliceBlue"/>
|
||||
</Trigger>
|
||||
<!--</SnippetMouseOver>-->
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
<!--<SnippetCleanTemplate>-->
|
||||
<ControlTemplate x:Key="roundbutton" TargetType="Button">
|
||||
<Grid>
|
||||
<Ellipse x:Name="backgroundElement" Fill="{TemplateBinding Background}" Stroke="{TemplateBinding Foreground}" />
|
||||
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
<!--</SnippetCleanTemplate>-->
|
||||
</Window.Resources>
|
||||
<Grid>
|
||||
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window5.xaml
|
||||
/// </summary>
|
||||
public partial class Window5 : Window
|
||||
{
|
||||
public Window5()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.Window6"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Window6" SizeToContent="WidthAndHeight" MinWidth="250">
|
||||
<Window.Resources>
|
||||
<!--<SnippetVisualState>-->
|
||||
<ControlTemplate x:Key="roundbutton" TargetType="Button">
|
||||
<Grid>
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup Name="CommonStates">
|
||||
<VisualState Name="Normal">
|
||||
</VisualState>
|
||||
<VisualState Name="MouseOver">
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
<Ellipse x:Name="backgroundElement" Fill="{TemplateBinding Background}" Stroke="{TemplateBinding Foreground}" />
|
||||
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
<!--</SnippetVisualState>-->
|
||||
<ControlTemplate x:Key="roundbuttonOther" TargetType="Button">
|
||||
<Grid>
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup Name="CommonStates">
|
||||
<VisualState Name="Normal">
|
||||
<!--<SnippetNormalState>-->
|
||||
<Storyboard>
|
||||
<ColorAnimation Storyboard.TargetName="backgroundElement"
|
||||
Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"
|
||||
To="{TemplateBinding Background}"
|
||||
Duration="0:0:0.3"/>
|
||||
</Storyboard>
|
||||
<!--</SnippetNormalState>-->
|
||||
</VisualState>
|
||||
<VisualState Name="MouseOver">
|
||||
<!--<SnippetMouseOverState>-->
|
||||
<Storyboard>
|
||||
<ColorAnimation Storyboard.TargetName="backgroundElement"
|
||||
Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"
|
||||
To="Yellow"
|
||||
Duration="0:0:0.3"/>
|
||||
</Storyboard>
|
||||
<!--</SnippetMouseOverState>-->
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
<Ellipse x:Name="backgroundElement" Fill="{TemplateBinding Background}" Stroke="{TemplateBinding Foreground}" />
|
||||
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
</Window.Resources>
|
||||
<Grid>
|
||||
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window6.xaml
|
||||
/// </summary>
|
||||
public partial class Window6 : Window
|
||||
{
|
||||
public Window6()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.Window7"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Template Intro Sample" SizeToContent="WidthAndHeight" MinWidth="250">
|
||||
<Window.Resources>
|
||||
<!--<FinalTemplate>-->
|
||||
<ControlTemplate x:Key="roundbutton" TargetType="Button">
|
||||
<Grid>
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup Name="CommonStates">
|
||||
<VisualState Name="Normal">
|
||||
<Storyboard>
|
||||
<ColorAnimation Storyboard.TargetName="backgroundElement"
|
||||
Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"
|
||||
To="{TemplateBinding Background}"
|
||||
Duration="0:0:0.3"/>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState Name="MouseOver">
|
||||
<Storyboard>
|
||||
<ColorAnimation Storyboard.TargetName="backgroundElement"
|
||||
Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"
|
||||
To="Yellow"
|
||||
Duration="0:0:0.3"/>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
<Ellipse Name="backgroundElement" Fill="{TemplateBinding Background}" Stroke="{TemplateBinding Foreground}" />
|
||||
<ContentPresenter x:Name="contentPresenter" HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
<!--</FinalTemplate>-->
|
||||
</Window.Resources>
|
||||
<StackPanel Margin="10">
|
||||
<Label>Unstyled Button</Label>
|
||||
<Button>Button 1</Button>
|
||||
<Label>Rounded Button</Label>
|
||||
<Button Template="{StaticResource roundbutton}" Width="65" Height="65" Click="Button_Click">Button 2</Button>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
@@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window7.xaml
|
||||
/// </summary>
|
||||
public partial class Window7 : Window
|
||||
{
|
||||
public Window7()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void Button_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
MessageBox.Show("Clicked");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.ExplicitStyle"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Height="100" Width="300"
|
||||
Title="Style Intro Sample">
|
||||
<!--<ExplicitStyleDeclare>-->
|
||||
<Window.Resources>
|
||||
<Style x:Key="TitleText" TargetType="TextBlock">
|
||||
<Setter Property="HorizontalAlignment" Value="Center" />
|
||||
<Setter Property="FontFamily" Value="Comic Sans MS"/>
|
||||
<Setter Property="FontSize" Value="14"/>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
<!--</ExplicitStyleDeclare>-->
|
||||
<!--<ExplicitStyleReference>-->
|
||||
<StackPanel>
|
||||
<TextBlock Style="{StaticResource TitleText}">My Pictures</TextBlock>
|
||||
<TextBlock>Check out my new pictures!</TextBlock>
|
||||
</StackPanel>
|
||||
<!--</ExplicitStyleReference>-->
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for ExplicitStyle.xaml
|
||||
/// </summary>
|
||||
public partial class ExplicitStyle : Window
|
||||
{
|
||||
public ExplicitStyle()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<!--<WindowResources>-->
|
||||
<Window x:Class="IntroToStylingAndTemplating.WindowSingleResource"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="WindowSingleResource" Height="450" Width="800">
|
||||
<Window.Resources>
|
||||
|
||||
<Style x:Key="Header1" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="15" />
|
||||
<Setter Property="FontWeight" Value="ExtraBold" />
|
||||
</Style>
|
||||
|
||||
</Window.Resources>
|
||||
<Grid />
|
||||
</Window>
|
||||
<!--</WindowResources>-->
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for WindowSingleResource.xaml
|
||||
/// </summary>
|
||||
public partial class WindowSingleResource : Window
|
||||
{
|
||||
public WindowSingleResource()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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:IntroToStylingAndTemplating"
|
||||
StartupUri="MainWindow.xaml">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
@@ -0,0 +1,6 @@
|
||||
Class Application
|
||||
|
||||
' Application-level events, such as Startup, Exit, and DispatcherUnhandledException
|
||||
' can be handled in this file.
|
||||
|
||||
End Class
|
||||
@@ -0,0 +1,18 @@
|
||||
<Window x:Class="MainWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Template Intro Sample" Loaded="WindowLoaded" SizeToContent="WidthAndHeight" MinWidth="250">
|
||||
<Window.Resources>
|
||||
|
||||
</Window.Resources>
|
||||
<StackPanel Margin="10">
|
||||
<Label>Unstyled Button</Label>
|
||||
<Button>Button 1</Button>
|
||||
<Label>Rounded Button</Label>
|
||||
<Button>Button 2</Button>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
@@ -0,0 +1,6 @@
|
||||
Class MainWindow
|
||||
|
||||
Private Sub WindowLoaded(sender As Object, e As Windows.RoutedEventArgs)
|
||||
|
||||
End Sub
|
||||
End Class
|
||||
@@ -0,0 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<RootNamespace>IntroToStylingAndTemplating</RootNamespace>
|
||||
<UseWpf>true</UseWpf>
|
||||
<AssemblyName>IntroToStylingAndTemplating</AssemblyName>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,14 @@
|
||||
// // Copyright (c) Microsoft. All rights reserved.
|
||||
// // Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
using System.Windows;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for App.xaml
|
||||
/// </summary>
|
||||
public partial class App : Application
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<!--<AppResources>-->
|
||||
<Application x:Class="IntroToStylingAndTemplating.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:IntroToStylingAndTemplating"
|
||||
StartupUri="WindowExplicitStyle.xaml">
|
||||
<Application.Resources>
|
||||
<ResourceDictionary>
|
||||
|
||||
<Style x:Key="Header1" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="15" />
|
||||
<Setter Property="FontWeight" Value="ExtraBold" />
|
||||
</Style>
|
||||
|
||||
</ResourceDictionary>
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
<!--</AppResources>-->
|
||||
@@ -0,0 +1,29 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<RootNamespace>IntroToStylingAndTemplating</RootNamespace>
|
||||
<UseWpf>true</UseWpf>
|
||||
<AssemblyName>IntroToStylingAndTemplating</AssemblyName>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="images\flower1.jpg">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="images\flower2.jpg">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="images\leaf1.jpg">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="images\leaf2.jpg">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="images\winter1.jpg">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,27 @@
|
||||
// // Copyright (c) Microsoft. All rights reserved.
|
||||
// // Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
using System.Windows;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for MainWindow.xaml
|
||||
/// </summary>
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
private PhotoList _photos;
|
||||
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void WindowLoaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
_photos = (PhotoList) (Resources["MyPhotos"] as ObjectDataProvider).Data;
|
||||
_photos.Path = "images";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.MainWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Style Intro Sample" Loaded="WindowLoaded" SizeToContent="WidthAndHeight">
|
||||
<Window.Resources>
|
||||
<ObjectDataProvider x:Key="MyPhotos" ObjectType="{x:Type local:PhotoList}"/>
|
||||
|
||||
<!--A Style that affects all TextBlocks-->
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="HorizontalAlignment" Value="Center" />
|
||||
<Setter Property="FontFamily" Value="Comic Sans MS"/>
|
||||
<Setter Property="FontSize" Value="14"/>
|
||||
</Style>
|
||||
|
||||
<!--A Style that extends the previous TextBlock Style-->
|
||||
<!--This is a "named style" with an x:Key of TitleText-->
|
||||
<Style BasedOn="{StaticResource {x:Type TextBlock}}"
|
||||
TargetType="TextBlock"
|
||||
x:Key="TitleText">
|
||||
<Setter Property="FontSize" Value="26"/>
|
||||
<Setter Property="Foreground">
|
||||
<Setter.Value>
|
||||
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStop Offset="0.0" Color="#90DDDD" />
|
||||
<GradientStop Offset="1.0" Color="#5BFFFF" />
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<!--Horizontal ListBox Control Template-->
|
||||
<Style TargetType="ListBox">
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="ListBox">
|
||||
<Border CornerRadius="5" Background="{TemplateBinding ListBox.Background}">
|
||||
<ScrollViewer HorizontalScrollBarVisibility="Auto">
|
||||
<StackPanel Orientation="Horizontal"
|
||||
VerticalAlignment="Center"
|
||||
HorizontalAlignment="Center"
|
||||
IsItemsHost="True"/>
|
||||
</ScrollViewer>
|
||||
</Border>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<!--DataTemplate to display Photos as images
|
||||
instead of text strings of Paths-->
|
||||
<DataTemplate DataType="{x:Type local:Photo}">
|
||||
<Border Margin="3">
|
||||
<Image Source="{Binding Source}"/>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
|
||||
<Style TargetType="ListBoxItem">
|
||||
<Setter Property="Opacity" Value="0.5" />
|
||||
<Setter Property="MaxHeight" Value="75" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Trigger.Setters>
|
||||
<Setter Property="Opacity" Value="1.0" />
|
||||
</Trigger.Setters>
|
||||
</Trigger>
|
||||
<EventTrigger RoutedEvent="Mouse.MouseEnter">
|
||||
<EventTrigger.Actions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation
|
||||
Duration="0:0:0.2"
|
||||
Storyboard.TargetProperty="MaxHeight"
|
||||
To="90" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger.Actions>
|
||||
</EventTrigger>
|
||||
<EventTrigger RoutedEvent="Mouse.MouseLeave">
|
||||
<EventTrigger.Actions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation
|
||||
Duration="0:0:1"
|
||||
Storyboard.TargetProperty="MaxHeight" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger.Actions>
|
||||
</EventTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
|
||||
</Window.Resources>
|
||||
<StackPanel Margin="10">
|
||||
<TextBlock Style="{StaticResource TitleText}" Name="textblock1">My Pictures</TextBlock>
|
||||
<TextBlock>Check out my new pictures!</TextBlock>
|
||||
|
||||
<ListBox ItemsSource="{Binding Source={StaticResource MyPhotos}}"
|
||||
Background="Silver" Width="600" Margin="10" SelectedIndex="0"/>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
@@ -0,0 +1,19 @@
|
||||
// // Copyright (c) Microsoft. All rights reserved.
|
||||
// // Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
// <PhotoClass>
|
||||
public class Photo
|
||||
{
|
||||
public Photo(string path)
|
||||
{
|
||||
Source = path;
|
||||
}
|
||||
|
||||
public string Source { get; }
|
||||
|
||||
public override string ToString() => Source;
|
||||
}
|
||||
// </PhotoClass>
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
// // Copyright (c) Microsoft. All rights reserved.
|
||||
// // Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
using System.Collections.ObjectModel;
|
||||
using System.IO;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
public class PhotoList : ObservableCollection<Photo>
|
||||
{
|
||||
private DirectoryInfo _directory;
|
||||
|
||||
public PhotoList()
|
||||
{
|
||||
}
|
||||
|
||||
public PhotoList(string path) : this(new DirectoryInfo(path))
|
||||
{
|
||||
}
|
||||
|
||||
public PhotoList(DirectoryInfo directory)
|
||||
{
|
||||
_directory = directory;
|
||||
Update();
|
||||
}
|
||||
|
||||
public string Path
|
||||
{
|
||||
set
|
||||
{
|
||||
_directory = new DirectoryInfo(value);
|
||||
Update();
|
||||
}
|
||||
get { return _directory.FullName; }
|
||||
}
|
||||
|
||||
public DirectoryInfo Directory
|
||||
{
|
||||
set
|
||||
{
|
||||
_directory = value;
|
||||
Update();
|
||||
}
|
||||
get { return _directory; }
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
foreach (var f in _directory.GetFiles("*.jpg"))
|
||||
{
|
||||
Add(new Photo(f.FullName));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Window1" Height="450" Width="800">
|
||||
<!--<SnippetDefaultTextBlockStyle>-->
|
||||
<Window.Resources>
|
||||
<!--A Style that affects all TextBlocks-->
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="HorizontalAlignment" Value="Center" />
|
||||
<Setter Property="FontFamily" Value="Comic Sans MS"/>
|
||||
<Setter Property="FontSize" Value="14"/>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
<!--</SnippetDefaultTextBlockStyle>-->
|
||||
<!--<SnippetTextBlocks>-->
|
||||
<StackPanel>
|
||||
<TextBlock>My Pictures</TextBlock>
|
||||
<TextBlock>Check out my new pictures!</TextBlock>
|
||||
</StackPanel>
|
||||
<!--</SnippetTextBlocks>-->
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window1.xaml
|
||||
/// </summary>
|
||||
public partial class Window1 : Window
|
||||
{
|
||||
public Window1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Window2" Height="450" Width="800" Loaded="Window_Loaded">
|
||||
<!--<SnippetDefaultTextBlockStyleBasedOn>-->
|
||||
<Window.Resources>
|
||||
<!-- .... other resources .... -->
|
||||
|
||||
<!--A Style that affects all TextBlocks-->
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="HorizontalAlignment" Value="Center" />
|
||||
<Setter Property="FontFamily" Value="Comic Sans MS"/>
|
||||
<Setter Property="FontSize" Value="14"/>
|
||||
</Style>
|
||||
|
||||
<!--A Style that extends the previous TextBlock Style with an x:Key of TitleText-->
|
||||
<Style BasedOn="{StaticResource {x:Type TextBlock}}"
|
||||
TargetType="TextBlock"
|
||||
x:Key="TitleText">
|
||||
<Setter Property="FontSize" Value="26"/>
|
||||
<Setter Property="Foreground">
|
||||
<Setter.Value>
|
||||
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStop Offset="0.0" Color="#90DDDD" />
|
||||
<GradientStop Offset="1.0" Color="#5BFFFF" />
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
<!--</SnippetDefaultTextBlockStyleBasedOn>-->
|
||||
<!--<SnippetTextBlocksExplicit>-->
|
||||
<StackPanel>
|
||||
<TextBlock Style="{StaticResource TitleText}" Name="textblock1">My Pictures</TextBlock>
|
||||
<TextBlock>Check out my new pictures!</TextBlock>
|
||||
</StackPanel>
|
||||
<!--</SnippetTextBlocksExplicit>-->
|
||||
</Window>
|
||||
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window2.xaml
|
||||
/// </summary>
|
||||
public partial class Window2 : Window
|
||||
{
|
||||
public Window2()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void Window_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// <SnippetSetStyleCode>
|
||||
textblock1.Style = (Style)Resources["TitleText"];
|
||||
// </SnippetSetStyleCode>
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.Window3"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Window3" Height="450" Width="800">
|
||||
<Window.Resources>
|
||||
<ObjectDataProvider x:Key="MyPhotos" ObjectType="{x:Type local:PhotoList}"/>
|
||||
</Window.Resources>
|
||||
<StackPanel>
|
||||
<TextBlock>My Pictures</TextBlock>
|
||||
<TextBlock>Check out my new pictures!</TextBlock>
|
||||
<!--<SnippetListBox>-->
|
||||
<ListBox ItemsSource="{Binding Source={StaticResource MyPhotos}}"
|
||||
Background="Silver" Width="600" Margin="10" SelectedIndex="0"/>
|
||||
<!--</SnippetListBox>-->
|
||||
</StackPanel>
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window3.xaml
|
||||
/// </summary>
|
||||
public partial class Window3 : Window
|
||||
{
|
||||
public Window3()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.Window4"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Window4" Height="450" Width="800">
|
||||
<!--<SnippetDataTemplate>-->
|
||||
<Window.Resources>
|
||||
<!-- .... other resources .... -->
|
||||
|
||||
<!--DataTemplate to display Photos as images
|
||||
instead of text strings of Paths-->
|
||||
<DataTemplate DataType="{x:Type local:Photo}">
|
||||
<Border Margin="3">
|
||||
<Image Source="{Binding Source}"/>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</Window.Resources>
|
||||
<!--</SnippetDataTemplate>-->
|
||||
<StackPanel>
|
||||
<TextBlock>My Pictures</TextBlock>
|
||||
<TextBlock>Check out my new pictures!</TextBlock>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window4.xaml
|
||||
/// </summary>
|
||||
public partial class Window4 : Window
|
||||
{
|
||||
public Window4()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.Window5"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Window5" Height="450" Width="800">
|
||||
<!--<SnippetPropertyTrigger>-->
|
||||
<Window.Resources>
|
||||
<!-- .... other resources .... -->
|
||||
|
||||
<Style TargetType="ListBoxItem">
|
||||
<Setter Property="Opacity" Value="0.5" />
|
||||
<Setter Property="MaxHeight" Value="75" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Trigger.Setters>
|
||||
<Setter Property="Opacity" Value="1.0" />
|
||||
</Trigger.Setters>
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
<!--</SnippetPropertyTrigger>-->
|
||||
<StackPanel>
|
||||
<TextBlock>My Pictures</TextBlock>
|
||||
<TextBlock>Check out my new pictures!</TextBlock>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window5.xaml
|
||||
/// </summary>
|
||||
public partial class Window5 : Window
|
||||
{
|
||||
public Window5()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.Window6"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="Window6" Height="450" Width="800">
|
||||
<Window.Resources>
|
||||
<!-- .... other resources .... -->
|
||||
|
||||
<Style TargetType="ListBoxItem">
|
||||
<Setter Property="Opacity" Value="0.5" />
|
||||
<Setter Property="MaxHeight" Value="75" />
|
||||
<!--<SnippetStyleEventTriggers>-->
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Trigger.Setters>
|
||||
<Setter Property="Opacity" Value="1.0" />
|
||||
</Trigger.Setters>
|
||||
</Trigger>
|
||||
<EventTrigger RoutedEvent="Mouse.MouseEnter">
|
||||
<EventTrigger.Actions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation
|
||||
Duration="0:0:0.2"
|
||||
Storyboard.TargetProperty="MaxHeight"
|
||||
To="90" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger.Actions>
|
||||
</EventTrigger>
|
||||
<EventTrigger RoutedEvent="Mouse.MouseLeave">
|
||||
<EventTrigger.Actions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation
|
||||
Duration="0:0:1"
|
||||
Storyboard.TargetProperty="MaxHeight" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger.Actions>
|
||||
</EventTrigger>
|
||||
</Style.Triggers>
|
||||
<!--</SnippetStyleEventTriggers>-->
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
<StackPanel>
|
||||
<TextBlock>My Pictures</TextBlock>
|
||||
<TextBlock>Check out my new pictures!</TextBlock>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Window6.xaml
|
||||
/// </summary>
|
||||
public partial class Window6 : Window
|
||||
{
|
||||
public Window6()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<Window x:Class="IntroToStylingAndTemplating.ExplicitStyle"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Height="100" Width="300"
|
||||
Title="Style Intro Sample">
|
||||
<!--<ExplicitStyleDeclare>-->
|
||||
<Window.Resources>
|
||||
<Style x:Key="TitleText" TargetType="TextBlock">
|
||||
<Setter Property="HorizontalAlignment" Value="Center" />
|
||||
<Setter Property="FontFamily" Value="Comic Sans MS"/>
|
||||
<Setter Property="FontSize" Value="14"/>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
<!--</ExplicitStyleDeclare>-->
|
||||
<!--<ExplicitStyleReference>-->
|
||||
<StackPanel>
|
||||
<TextBlock Style="{StaticResource TitleText}">My Pictures</TextBlock>
|
||||
<TextBlock>Check out my new pictures!</TextBlock>
|
||||
</StackPanel>
|
||||
<!--</ExplicitStyleReference>-->
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for ExplicitStyle.xaml
|
||||
/// </summary>
|
||||
public partial class ExplicitStyle : Window
|
||||
{
|
||||
public ExplicitStyle()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<!--<WindowResources>-->
|
||||
<Window x:Class="IntroToStylingAndTemplating.WindowSingleResource"
|
||||
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:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="WindowSingleResource" Height="450" Width="800">
|
||||
<Window.Resources>
|
||||
|
||||
<Style x:Key="Header1" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="15" />
|
||||
<Setter Property="FontWeight" Value="ExtraBold" />
|
||||
</Style>
|
||||
|
||||
</Window.Resources>
|
||||
<Grid />
|
||||
</Window>
|
||||
<!--</WindowResources>-->
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IntroToStylingAndTemplating
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for WindowSingleResource.xaml
|
||||
/// </summary>
|
||||
public partial class WindowSingleResource : Window
|
||||
{
|
||||
public WindowSingleResource()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 152 KiB |
|
After Width: | Height: | Size: 102 KiB |
@@ -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:IntroToStylingAndTemplating"
|
||||
StartupUri="MainWindow.xaml">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
@@ -0,0 +1,6 @@
|
||||
Class Application
|
||||
|
||||
' Application-level events, such as Startup, Exit, and DispatcherUnhandledException
|
||||
' can be handled in this file.
|
||||
|
||||
End Class
|
||||
@@ -0,0 +1,33 @@
|
||||
<Window x:Class="MainWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:IntroToStylingAndTemplating"
|
||||
mc:Ignorable="d"
|
||||
Title="MainWindow" Height="450" Width="800" Loaded="Window_Loaded">
|
||||
<Window.Resources>
|
||||
<!-- .... other resources .... -->
|
||||
|
||||
<!--A Style that extends the previous TextBlock Style-->
|
||||
<!--This is a "named style" with an x:Key of TitleText-->
|
||||
<Style BasedOn="{StaticResource {x:Type TextBlock}}"
|
||||
TargetType="TextBlock"
|
||||
x:Key="TitleText">
|
||||
<Setter Property="FontSize" Value="26"/>
|
||||
<Setter Property="Foreground">
|
||||
<Setter.Value>
|
||||
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStop Offset="0.0" Color="#90DDDD" />
|
||||
<GradientStop Offset="1.0" Color="#5BFFFF" />
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
<Grid>
|
||||
<TextBlock Name="textblock1">My Pictures</TextBlock>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,7 @@
|
||||
Class MainWindow
|
||||
Private Sub Window_Loaded(sender As Object, e As Windows.RoutedEventArgs)
|
||||
'<SnippetSetStyleCode>
|
||||
textblock1.Style = CType(Resources("TitleText"), Windows.Style)
|
||||
'</SnippetSetStyleCode>
|
||||
End Sub
|
||||
End Class
|
||||
@@ -0,0 +1,13 @@
|
||||
' <PhotoClass>
|
||||
Public Class Photo
|
||||
Sub New(ByVal path As String)
|
||||
Source = path
|
||||
End Sub
|
||||
|
||||
Public ReadOnly Property Source As String
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Return Source
|
||||
End Function
|
||||
End Class
|
||||
' </PhotoClass>
|
||||
@@ -0,0 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0-windows</TargetFramework>
|
||||
<RootNamespace>IntroToStylingAndTemplating</RootNamespace>
|
||||
<UseWpf>true</UseWpf>
|
||||
<AssemblyName>IntroToStylingAndTemplating</AssemblyName>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||