2013-02-24 2 views
0

Я создал целочисленный массив в XAML следующим образом:Binding выпадающего в целочисленный массив

<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 с свойством SelectedValue ComboBox. Однако 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" /> 
+0

показать нам код интервала – makc

ответ

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> 

Надеюсь, это поможет.

+0

Я получил эту работу, но теперь я пытаюсь связать другую комбо со списком аналогичным образом - у меня есть свойство string в VM, которое я привязываю к SelectedItem из ComboBox. Но здесь снова значение не отражается в ComboBox. – Lucifer

1

Вы создали массив short значений. Ваше имущество Interval должно также иметь тип short.

public short Interval { get; set; } 

Если вы намеревались использовать int как тип элемента, вы должны использовать sys:Int32 как тип элемента массива.


Кроме того, вы должны связать имущество SelectedItem. Хотя он работает в вашем случае, SelectedValue предназначен для работы в сочетании с SelectedValuePath.

<ComboBox SelectedItem="{Binding Path=Interval}" ... /> 
Смежные вопросы