<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Title="About WPF"
Background="OrangeRed">
<Canvas>
<Label Padding="0,10,20,30" Background="Orange">0,10,20,30</Label>
</Canvas>
</Window>
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Title="About WPF"
Background="OrangeRed">
<Canvas>
<Label Padding="0,10,20,30" Background="Orange">0,10,20,30</Label>
</Canvas>
</Window>
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MouseInput" Height="300" Width="300">
<Grid>
<Ellipse Fill="Blue" x:Name="myEllipse" />
</Grid>
</Window>
//File:Window.xaml.cs
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;
using System.Diagnostics;
namespace WpfApplication1
{
public partial class Window1 : System.Windows.Window
{
public Window1()
{
InitializeComponent();
myEllipse.MouseUp += myEllipse_MouseUp;
}
void myEllipse_MouseUp(object sender, MouseButtonEventArgs e)
{
Mouse.Capture(null);
}
}
}
<Window x:Class="WpfApplication1.HitTestExample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WpfApplication1" Height="300" Width="300">
<Canvas x:Name="canvas1"
MouseLeftButtonDown="OnMouseLeftButtonDown">
<Rectangle Canvas.Left="20" Canvas.Top="20" Width="100"
Height="60" Stroke="Black" Fill="LightBlue" Opacity="0.7" />
<Rectangle Canvas.Left="70" Canvas.Top="50" Width="100"
Height="60" Stroke="Black" Fill="LightBlue" Opacity="0.7" />
<Rectangle Canvas.Left="150" Canvas.Top="80" Width="100"
Height="60" Stroke="Black" Fill="LightBlue" Opacity="0.7" />
<Rectangle Canvas.Left="20" Canvas.Top="100" Width="50"
Height="50" Stroke="Black" Fill="LightBlue" Opacity="0.7" />
<Rectangle Canvas.Left="40" Canvas.Top="60" Width="50"
Height="50" Stroke="Black" Fill="LightBlue" Opacity="0.7" />
<Rectangle Canvas.Left="30" Canvas.Top="130" Width="50"
Height="50" Stroke="Black" Fill="LightBlue" Opacity="0.7" />
</Canvas>
</Window>
//File:Window.xaml.cs
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Shapes;
namespace WpfApplication1
{
public partial class HitTestExample : Window
{
private List<Rectangle> hitList = new List<Rectangle>();
private EllipseGeometry hitArea = new EllipseGeometry();
public HitTestExample()
{
InitializeComponent();
}
private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
foreach (Rectangle rect in canvas1.Children)
{
rect.Fill = Brushes.Red;
}
Point pt = e.GetPosition(canvas1);
hitArea = new EllipseGeometry(pt, 1.0, 1.0);
hitList.Clear();
VisualTreeHelper.HitTest(canvas1, null,new HitTestResultCallback(HitTestCallback),new GeometryHitTestParameters(hitArea));
if (hitList.Count > 0)
{
foreach (Rectangle rect in hitList)
{
rect.Fill = Brushes.Blue;
}
Console.WriteLine("You hit " + hitList.Count.ToString() + " rectangles.");
}
}
public HitTestResultBehavior HitTestCallback(HitTestResult result)
{
IntersectionDetail intersectionDetail = ((GeometryHitTestResult)result).IntersectionDetail;
switch (intersectionDetail)
{
case IntersectionDetail.FullyContains:
hitList.Add((Rectangle)result.VisualHit);
return HitTestResultBehavior.Continue;
case IntersectionDetail.Intersects:
return HitTestResultBehavior.Continue;
case IntersectionDetail.FullyInside:
return HitTestResultBehavior.Continue;
default:
return HitTestResultBehavior.Stop;
}
}
}
}
<Page x:Class="NavigationApplication.Page3"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Page3" WindowTitle="Page3" Loaded="Init">
<StackPanel Margin="3" Name="pnl">
<TextBlock Margin="3" TextWrapping="Wrap">
This is a Page3.xaml.
Click <Hyperlink NavigateUri="Menu.xaml">here</Hyperlink> to go to the Menu.
</TextBlock>
</StackPanel>
</Page>
//File:Window.xaml.cs
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.Navigation;
using System.Windows.Shapes;
namespace NavigationApplication
{
public partial class Page3 : System.Windows.Controls.Page
{
public Page3()
{
InitializeComponent();
}
private void Init(object sender, EventArgs e)
{
NavigationService nav = NavigationService.GetNavigationService(this);
while (nav.CanGoBack)
{
;
}
}
}
}
<NavigationWindow
x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="NavigationBasics"
Height="300"
Width="300">
</NavigationWindow>
//File:Window.xaml.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Windows.Navigation;
using System.Windows.Documents;
using System.Diagnostics;
namespace WpfApplication1 {
public partial class Window1 : NavigationWindow {
Hyperlink link1 = new Hyperlink();
Hyperlink link2 = new Hyperlink();
TextBlock text1 = new TextBlock();
TextBlock text2 = new TextBlock();
public Window1() {
InitializeComponent();
text1.Inlines.Add(link1);
text1.VerticalAlignment = VerticalAlignment.Bottom;
text1.Loaded += text1_Loaded;
link1.Inlines.Add("Click to see page 2");
link1.Click += link1_Click;
text2.Inlines.Add(link2);
text2.VerticalAlignment = VerticalAlignment.Bottom;
text2.Loaded += text2_Loaded;
link2.Inlines.Add("Click to go back to page 1");
link2.Click += link2_Click;
this.Navigate(text1);
Button button1 = new Button();
Button button2 = new Button();
button1.Content = "Click to see Button 2";
button1.Loaded += delegate(object sender, RoutedEventArgs e2) {
((NavigationWindow)button1.Parent).Title = "Welcome to button1";
};
button1.Click += delegate(object sender, RoutedEventArgs e2) {
this.Navigate(button2);
};
button2.Content = "Click to go back to Button 1";
button2.Loaded += delegate(object sender, RoutedEventArgs e2) {
((NavigationWindow)button2.Parent).Title = "Welcome to button2";
};
button2.Click += delegate(object sender, RoutedEventArgs e2) {
((NavigationWindow)button2.Parent).GoBack();
};
this.Navigate(button1);
}
void text1_Loaded(object sender, RoutedEventArgs e) {
Title = "Welcome to Page 1";
}
void text2_Loaded(object sender, RoutedEventArgs e) {
Title = "Welcome to Page 2";
}
void link1_Click(object sender, RoutedEventArgs e) {
Navigate(text2);
}
void link2_Click(object sender, RoutedEventArgs e) {
NavigationService navService = NavigationService.GetNavigationService((DependencyObject)sender);
navService.GoBack();
}
}
}
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MouseInput" Height="300" Width="300">
<Grid>
<Ellipse Fill="Blue" x:Name="myEllipse" />
</Grid>
</Window>
//File:Window.xaml.cs
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;
using System.Diagnostics;
namespace WpfApplication1
{
public partial class Window1 : System.Windows.Window
{
public Window1()
{
InitializeComponent();
myEllipse.MouseMove += myEllipse_MouseMove;
}
void myEllipse_MouseMove(object sender, MouseEventArgs e)
{
Debug.WriteLine(Mouse.GetPosition(myEllipse));
}
}
}
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/interactivedesigner/2006"
mc:Ignorable="d"
x:Class="InputExamples.PointHitTest"
Width="640" Height="480">
<Window.Resources>
<Storyboard x:Key="OnLoaded"/>
</Window.Resources>
<Window.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard x:Name="OnLoaded_BeginStoryboard" Storyboard="{DynamicResource OnLoaded}"/>
</EventTrigger>
</Window.Triggers>
<StackPanel>
<Rectangle Fill="Red" Width="200" Height="200" x:Name="RectangleArea"/>
<Label d:LayoutOverrides="Height" Width="Auto" Height="28" x:Name="HitLabel" Content="Label"/>
</StackPanel>
</Window>
//File:Window.xaml.cs
using System;
using System.IO;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Navigation;
namespace InputExamples
{
public partial class PointHitTest
{
private string hitStatus;
public PointHitTest()
{
this.InitializeComponent();
}
protected override void OnInitialized(EventArgs e)
{
base.OnInitialized(e);
CompositionTarget.Rendering += this.CompositionTarget_Rendering;
}
private void CompositionTarget_Rendering(object sender, EventArgs e)
{
Point position = Mouse.GetPosition(RectangleArea);
hitStatus = "no hit";
VisualTreeHelper.HitTest(RectangleArea,null,
new HitTestResultCallback(HitTestResultHandler),
new PointHitTestParameters(position)
);
this.HitLabel.Content = String.Format("Result of the hit test: {0}", hitStatus);
}
public HitTestResultBehavior HitTestResultHandler(HitTestResult result)
{
PointHitTestResult hitResult = (PointHitTestResult)result;
hitStatus = String.Format("{0} was hit at this point: {1}",
((FrameworkElement)hitResult.VisualHit).Name,
hitResult.PointHit.ToString()
);
return HitTestResultBehavior.Continue;
}
}
}