Question

Set ItemsSource of a ComboBox to an Array of Integers?

Was it helpful?

Solution

<Window
    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">
    <Window.Resources>
        <x:Array x:Key="Integers" Type="{x:Type sys:Int32}">
            <sys:Int32>0</sys:Int32>
            <sys:Int32>1</sys:Int32>
            <sys:Int32>2</sys:Int32>
        </x:Array>
    </Window.Resources>
    <ComboBox ItemsSource="{Binding Source={StaticResource Integers}}" />
</Window>

OTHER TIPS

I had a similar problem with binding an array of integers coming from a ViewModel to the ComboBox. Here what worked for me.

Here is XAML, where we are binding the property ArrayOfIntegers to ItemsSource of the ComboBox

<Window x:Class="POpUpWindow.comboBox"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"             
        Title="comboBox" Height="300" Width="300">  
    <Grid>
        <ComboBox  x:Name="combox"  IsReadOnly="True" 
                   VerticalAlignment="Center" SelectedIndex="0" 
                   ItemsSource="{Binding ArrayOfIntegers}">
        </ComboBox>
    </Grid>
</Window>

Here is the code behind and the ViewModel which has the property ArrayOfIntegers

public partial class comboBox : Window
{
    private ViewModel mViewModel = new ViewModel();

    public comboBox()
    {
        InitializeComponent();
        this.DataContext = mViewModel;
    }
}

public class ViewModel : ViewModelBase
{
    public ViewModel()
    {
        ArrayOfIntegers = new int[]{4, 6, 9};
    }

    private int[] mArrayOfIntegers = new int[3];
    public int[] ArrayOfIntegers
    {
        get { return mArrayOfIntegers; } 
        set { mArrayOfIntegers = value; } 
    }
}

Yes:

<Window x:Class="IntArrayItemsSource.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
    <ComboBox ItemsSource="{Binding}"/>
</Grid>
</Window>


namespace IntArrayItemsSource {
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1: Window {
    public Window1() {
        InitializeComponent();
        this.DataContext = new int[] { 1, 2, 3, 4, 5, 6, 7 };
    }
}
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top