Set ItemsSource of a ComboBox to an Array of Integers?
Set ItemsSource of a ComboBox 开发者_开发技巧to an Array of Integers?
<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>
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 };
}
}
}
精彩评论