1

我在 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 属性的值相对应的选定值。这是我的组合框 XAML 代码:

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

2 回答 2

3

嗨,您应该尝试 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>

我希望这将有所帮助。

于 2013-02-24T12:33:57.423 回答
2

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

public short Interval { get; set; }

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


此外,您应该绑定该SelectedItem属性。尽管它适用于您的情况,但它SelectedValue旨在与SelectedValuePath.

<ComboBox SelectedItem="{Binding Path=Interval}" ... />
于 2013-02-24T12:29:57.240 回答