WPF C# Tutorial

  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:sys="clr-namespace:System;assembly=mscorlib"
  xmlns:local="clr-namespace:WpfApplication1" 
  Title="Random Numbers Built to Order">
  
    
      
        0
        10
      

    
    
  

  
    
    
      
        
          
            
          

        
      

    
    
    
      
        
          
            
          

        
      

    
    
    
    Next
  

//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 WpfApplication1 {
  public partial class Window1 : System.Windows.Window {
    public Window1() {
      InitializeComponent();
      nextButton.Click += new RoutedEventHandler(nextButton_Click);
    }
    void nextButton_Click(object sender, RoutedEventArgs e) {
      ((ObjectDataProvider)Resources["nextRandomNumber"]).Refresh();
    }
  }
  public class StringToInt32Converter : IValueConverter {
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
      return ((int)value).ToString();
    }
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
      return int.Parse((string)value);
    }
  }
  public class IntegerValidator : ValidationRule {
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) {
      try {
        int.Parse((string)value);
        return ValidationResult.ValidResult;
      }
      catch( Exception ex ) {
        return new ValidationResult(false, ex.Message);
      }
    }
  }
}