Domanda

Impostare ItemsSource di un ComboBox su una matrice di numeri interi?

È stato utile?

Soluzione

<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>

Altri suggerimenti

Ho avuto un problema simile con l'associazione di un array di numeri interi provenienti da un ViewModel al ComboBox. Ecco cosa ha funzionato per me.

Ecco XAML, dove stiamo associando la proprietà ArrayOfIntegers a ItemsSource del 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>

Ecco il codice dietro e ViewModel che ha la proprietà 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; } 
    }
}

Si

<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 };
    }
}
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top