This is a collection of snippets useful in quickly plumbing a control with data. I use these in demos, tutorials, prototypes, and when replying to forum questions.

NOTE: DO NOT TRY TO COPY FROM HERE, USE THIS MSDN SAMPLES PAGE INSTEAD, AS THIS WON'T COPY/PASTE WELL



Array of String


<x:Array x:Key="stringArray" Type="sys:String"
        xmlns:sys="clr-namespace:System;assembly=mscorlib">
    <sys:String>Bear</sys:String>
    <sys:String>Bird</sys:String>
    <sys:String>Cat</sys:String>
    <sys:String>Cow</sys:String>
    <sys:String>Dog</sys:String>
    <sys:String>Elephant</sys:String>
    <sys:String>Fish</sys:String>
    <sys:String>Goat</sys:String>
    <sys:String>Hamster</sys:String>
    <sys:String>Horse</sys:String>
    <sys:String>Insect</sys:String>
    <sys:String>Sheep</sys:String>
    <sys:String>Snake</sys:String>
    <sys:String>Monkey</sys:String>
</x:Array>


   

Array of Int


<x:Array x:Key="intArray" Type="sys:Int32"
        xmlns:sys="clr-namespace:System;assembly=mscorlib">
    <sys:Int32>0</sys:Int32>
    <sys:Int32>1</sys:Int32>
    <sys:Int32>2</sys:Int32>
    <sys:Int32>3</sys:Int32>
    <sys:Int32>4</sys:Int32>
    <sys:Int32>5</sys:Int32>
    <sys:Int32>6</sys:Int32>
    <sys:Int32>7</sys:Int32>
    <sys:Int32>8</sys:Int32>
    <sys:Int32>9</sys:Int32>
</x:Array>


Array of Person


<x:Array x:Key="personArray" Type="local:Person"
            xmlns:sys="clr-namespace:System;assembly=mscorlib"
            xmlns:local="clr-namespace:StaticDummyData.PocoModel">
    <local:Person>
        <local:Person.FirstName>Jack</local:Person.FirstName>
        <local:Person.LastName>Jones</local:Person.LastName>
        <local:Person.Age>42</local:Person.Age>
        <local:Person.JoinDate>12/10/11</local:Person.JoinDate>
    </local:Person>
    <local:Person>
        <local:Person.FirstName>Jill</local:Person.FirstName>
        <local:Person.LastName>Johnson</local:Person.LastName>
        <local:Person.Age>31</local:Person.Age>
        <local:Person.JoinDate>10/09/08</local:Person.JoinDate>
    </local:Person>
    <local:Person>
        <local:Person.FirstName>Tom</local:Person.FirstName>
        <local:Person.LastName>Jones</local:Person.LastName>
        <local:Person.Age>26</local:Person.Age>
        <local:Person.JoinDate>08/02/12</local:Person.JoinDate>
    </local:Person>
</x:Array>




I use two types of Person class. A POCO class for basic demos and XAML static data, and a INotifyPropertyChanged implemented version for binding examples.

A POCO Person class


using System;
 
namespace StaticDummyData.PocoModel
{
    public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int Age { get; set; }
        public DateTime JoinDate { get; set; }
    }
}

 

An INotifyPropertyChanged implemented Person class


using System;
using System.ComponentModel;
 
namespace StaticDummyData.MvvmModel
{
    public class Person : INotifyPropertyChanged
    {
        string _FirstName;
        public string FirstName
        {
            get
            {
                return _FirstName;
            }
            set
            {
                if (_FirstName != value)
                {
                    _FirstName = value;
                    RaisePropertyChanged("FirstName");
                }
            }
        }
 
        string _LastName;
        public string LastName
        {
            get
            {
                return _LastName;
            }
            set
            {
                if (_LastName != value)
                {
                    _LastName = value;
                    RaisePropertyChanged("LastName");
                }
            }
        }
 
        int _Age;
        public int Age
        {
            get
            {
                return _Age;
            }
            set
            {
                if (_Age != value)
                {
                    _Age = value;
                    RaisePropertyChanged("Age");
                }
            }
        }
 
        DateTime _JoinDate;
        public DateTime JoinDate
        {
            get
            {
                return _JoinDate;
            }
            set
            {
                if (_JoinDate != value)
                {
                    _JoinDate = value;
                    RaisePropertyChanged("JoinDate");
                }
            }
        }
 
        void RaisePropertyChanged(string prop)
        {
            if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(prop)); }
        }
        public event PropertyChangedEventHandler PropertyChanged;
    }
}



XAML Usage Examples


The x:Array markup code above is placed in the Resources tag. If it is a durable project, place them in App.xaml (Application.Resources) and use as shown below:

<Window x:Class="StaticDummyData.MainWindow"
        Title="MainWindow" Height="350" Width="525">
    <StackPanel>
        <ComboBox ItemsSource="{StaticResource stringArray}"/>
        <ComboBox ItemsSource="{StaticResource intArray}"/>
        <DataGrid ItemsSource="{StaticResource personArray}"/>
    </StackPanel>
</Window>


If it is a quick demo, you can dump this on the same Page/Window/UserControl that uses it:

<Window x:Class="StaticDummyData.MainWindow"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <x:Array x:Key="stringArray" Type="sys:String"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:sys="clr-namespace:System;assembly=mscorlib">
            <sys:String>Bear</sys:String>
            <sys:String>Bird</sys:String>
            <sys:String>Cat</sys:String>
        </x:Array>
    </Window.Resources>
    <StackPanel>
        <ComboBox ItemsSource="{StaticResource stringArray}"/>
    </StackPanel>
</Window>

You can even embed it in the actual control that consumes it, but then it has to be a DynamicReference:

<ComboBox ItemsSource="{DynamicResource stringArray}">
    <ComboBox.Resources>
        <x:Array x:Key="stringArray" Type="sys:String"
        xmlns:sys="clr-namespace:System;assembly=mscorlib">
            <sys:String>Bear</sys:String>
            <sys:String>Bird</sys:String>
            <sys:String>Cat</sys:String>
        </x:Array>
    </ComboBox.Resources>
</ComboBox>





These are all snippets I use regularly in my community work and in prototyping designs. I use this page as a quick reference for that purpose.

NOTE: DO NOT TRY TO COPY FROM HERE, USE THIS MSDN SAMPLES PAGE INSTEAD, AS THIS WON'T COPY/PASTE WELL