我有一个包含Int32对象集合的Combobox。 ComboBox SelectedItem绑定到Int32。
<ComboBox>
<ComboBox.SelectedItem>
<Binding Path="MidiChannel" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" />
</ComboBox.SelectedItem>
<ComboBox.Items>
<ComboBoxItem>
<x:Int32>0</x:Int32>
</ComboBoxItem>
<ComboBoxItem>
<x:Int32>1</x:Int32>
</ComboBoxItem>
<ComboBoxItem>
<x:Int32>2</x:Int32>
</ComboBoxItem>
<ComboBoxItem>
<x:Int32>3</x:Int32>
</ComboBoxItem>
<ComboBoxItem>
<x:Int32>4</x:Int32>
</ComboBoxItem>
<ComboBoxItem>
<x:Int32>5</x:Int32>
</ComboBoxItem>
<ComboBoxItem>
<x:Int32>6</x:Int32>
</ComboBoxItem>
<ComboBoxItem>
<x:Int32>7</x:Int32>
</ComboBoxItem>
<ComboBoxItem>
<x:Int32>8</x:Int32>
</ComboBoxItem>
<ComboBoxItem>
<x:Int32>9</x:Int32>
</ComboBoxItem>
<ComboBoxItem>
<x:Int32>10</x:Int32>
</ComboBoxItem>
<ComboBoxItem>
<x:Int32>11</x:Int32>
</ComboBoxItem>
<ComboBoxItem>
<x:Int32>12</x:Int32>
</ComboBoxItem>
<ComboBoxItem>
<x:Int32>13</x:Int32>
</ComboBoxItem>
<ComboBoxItem>
<x:Int32>14</x:Int32>
</ComboBoxItem>
<ComboBoxItem>
<x:Int32>15</x:Int32>
</ComboBoxItem>
</ComboBox.Items>
</ComboBox>
MidiChannel属性实现了INotifyPropertyChanged。
无论我尝试什么组合,使用SelectedValue而不是SelectedItem切换集合和SelectedItem。 ComboBox不会在UI中显示SelectedItem。输出没有显示任何绑定错误,我已检查Int32是否存在于类中。如何让ComboBox显示我的Int32?
答案 0 :(得分:1)
我不是百分百确定,但是您使用<ComboboxItem>
元素填充了您的列表。
您的属性应该属于该类型(最好不要)或者您的Path应该反映ComboboxItem.Content或其他内容。
总而言之,使用ItemSource属性并让ViewModel提供整数列表要容易得多(更好)。一个简单的数组或List<int>
就足够了。
如果您确实想使用XAML,请尝试省略包装器:
<ComboBox.Items>
<x:Int32>0</x:Int32>
<x:Int32>1</x:Int32>
<x:Int32>2</x:Int32>
...