将组合框绑定到整数数组

时间:2013-02-24 12:22:45

标签: wpf binding combobox

我在XAML中创建了一个整数数组,如下所示:

 <x:Array Type="{x:Type sys:Int16}" x:Key="intervals">
        <sys:Int16>1</sys:Int16>
        <sys:Int16>2</sys:Int16>
        <sys:Int16>3</sys:Int16>
 </x:Array>

我在ViewModel中有一个名为Interval的整数属性。 我试图将此Interval属性绑定到ComboBox的SelectedValue属性。但是,ComboBox不显示与Interval属性值对应的选定值。这是我的ComboBox XAML代码:

 <ComboBox SelectedValue="{Binding Path=Interval}" Height="25" ItemsSource="{StaticResource intervals}" HorizontalContentAlignment="Center" Margin="78,47,237,128" Name="comboBox1" VerticalContentAlignment="Center" Width="85" />

2 个答案:

答案 0 :(得分:2)

您好,您应该尝试使用SelectedItem而不是SelectedValue,因为对于SelectedVlue,您还必须提供SelectedValuePath。

public partial class MainWindow
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = this;
    }
    public Int16 Interval { get; set; }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        var a = Interval;
    }
}

 <Window.Resources>
    <x:Array Type="{x:Type sys:Int16}" x:Key="intervals">
        <sys:Int16>1</sys:Int16>
        <sys:Int16>2</sys:Int16>
        <sys:Int16>3</sys:Int16>
    </x:Array>
</Window.Resources>

    <Grid x:Name="LayoutRoot">
    <StackPanel>
        <ComboBox SelectedItem="{Binding Path=Interval}" Height="25" ItemsSource="{StaticResource intervals}" HorizontalContentAlignment="Center" Margin="78,47,237,128" Name="comboBox1" VerticalContentAlignment="Center" Width="85" />
        <Button Content="ok" Click="Button_Click"/>
    </StackPanel>
</Grid>

我希望这会有所帮助。

答案 1 :(得分:1)

您创建了一个short值数组。您的Interval属性也应该是short类型。

public short Interval { get; set; }

如果您打算将int用作项目类型,则必须使用sys:Int32作为数组元素类型。


此外,您应该绑定SelectedItem属性。虽然它适用于您的情况,SelectedValue旨在与SelectedValuePath一起使用。

<ComboBox SelectedItem="{Binding Path=Interval}" ... />
相关问题