StackPanel PreviewTextInput and PreviewKeyDown

image_pdfimage_print


   
  


<Window x:Class="RoutedEvents.OnlyNumbers"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Only Numbers" Height="300" Width="300">
    <StackPanel Margin="5" PreviewTextInput="pnl_PreviewTextInput" PreviewKeyDown="pnl_PreviewKeyDown">
        <TextBox Margin="3" AcceptsTab="False"></TextBox>
        <TextBox Margin="3"></TextBox>
        <TextBox Margin="3"></TextBox>
    </StackPanel>
    
</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;

namespace RoutedEvents
{
    public partial class OnlyNumbers : System.Windows.Window
    {
        public OnlyNumbers()
        {
            InitializeComponent();
        }
        private void pnl_PreviewTextInput(object sender, TextCompositionEventArgs e)
        {
            short val;
            if (!Int16.TryParse(e.Text, out val))
            {
                e.Handled = true;
            }            
        }

        private void pnl_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Space)
            {
                e.Handled = true;
            }
        }
    }
}

   
    
     


If input is not a number do not handle the key event

image_pdfimage_print


   
  


<Window x:Class="RoutedEvents.OnlyNumbers"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Only Numbers" Height="300" Width="300">
    <StackPanel Margin="5" PreviewTextInput="pnl_PreviewTextInput" PreviewKeyDown="pnl_PreviewKeyDown">
        <TextBox Margin="3" AcceptsTab="False"></TextBox>
        <TextBox Margin="3"></TextBox>
        <TextBox Margin="3"></TextBox>
    </StackPanel>
    
</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;

namespace RoutedEvents
{
    public partial class OnlyNumbers : System.Windows.Window
    {
        public OnlyNumbers()
        {
            InitializeComponent();
        }
        private void pnl_PreviewTextInput(object sender, TextCompositionEventArgs e)
        {
            short val;
            if (!Int16.TryParse(e.Text, out val))
            {
                e.Handled = true;
            }            
        }

        private void pnl_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Space)
            {
                e.Handled = true;
            }
        }
    }
}

   
    
     


On Key Down Handler

image_pdfimage_print


   
  


<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="KeyDown Sample" Height="400" Width="500">
  <StackPanel>
    <TextBlock Width="300" Height="20">
      Type some text into the TextBox and press the Enter key.
    </TextBlock>
    <TextBox Width="300" Height="30" Name="textBox1"
             KeyDown="OnKeyDownHandler"/>
    <TextBlock Width="300" Height="100" Name="textBlock1"/>
  </StackPanel>
</Window>

//File:Window.xaml.cs

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;


namespace WpfApplication1
{
    public partial class Window1 : Window
    {

        public Window1()
        {
            InitializeComponent();
        }
        private void OnKeyDownHandler(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Return)
            {
                textBlock1.Text = "You Entered: " + textBox1.Text;
            }
        }
    }
}

   
    
     


Create Label controls that have access keys and support text wrapping.

image_pdfimage_print


   
   

<StackPanel
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="LabelSimple.Pane1">

            <DockPanel Margin="30,10,3,3" Grid.Column="0" Grid.Row="2">
            <!--<Snippet1>-->
            <TextBox Name="tb" Width="50"/>
            <Label Target="{Binding ElementName=tb}">_File (Press Alt to see the underline)</Label>
            <!--</Snippet1>-->
        </DockPanel>
    
</StackPanel>

   
    
    
     


Text Wrapping Label

image_pdfimage_print


   
   
<StackPanel
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="LabelSimple.Pane1">

    <DockPanel Margin="30,10,3,3" Grid.Column="0" Grid.Row="3">
        <Label Width="200" HorizontalAlignment="Left">
            <TextBlock TextWrapping="WrapWithOverflow">
          A long piece of text that requires text wrapping
          goes here.
            </TextBlock>
        </Label>
    </DockPanel>

</StackPanel>

   
    
    
     


Proportional Tiles

image_pdfimage_print
   
     
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="Microsoft.Samples.Graphics.RectangleExample"
    WindowTitle="Example">
  <Canvas>

    <TextBlock Grid.Row="1" Margin="3">Proportional Tiles</TextBlock>
    <Rectangle Grid.Row="1" Grid.Column="1" Stroke="Black">
      <Rectangle.Fill>
        <ImageBrush ImageSource="c:image.jpg" TileMode="Tile"
                    Viewport="0 0 0.2 0.2"></ImageBrush>
      </Rectangle.Fill>
    </Rectangle>
  </Canvas>
</Page>

   
    
    
    
    
     


Proportional Tiles (no stretch)

image_pdfimage_print
   
     
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="Microsoft.Samples.Graphics.RectangleExample"
    WindowTitle="Example">
  <Canvas>
    <TextBlock Grid.Row="2" Margin="3">
      Proportional Tiles<LineBreak></LineBreak>(no stretch)
    </TextBlock>
    <Rectangle Grid.Row="2" Grid.Column="1" Stroke="Black">
      <Rectangle.Fill>
        <ImageBrush ImageSource="c:image.jpg" TileMode="Tile" Stretch="None"
                    Viewport="0 0 0.2 0.2"></ImageBrush>
      </Rectangle.Fill>
    </Rectangle>

  </Canvas>
</Page>