我在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" />
答案 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}" ... />