UWP ComboBox 不显示绑定项
UWP ComboBox not showing Bound item
我有一个包含 Int32 对象集合的组合框。 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。
无论我尝试什么组合,切换集合和 SelectedItem,使用 SelectedValue 而不是 SelectedItem。 ComboBox 不会在 UI 中显示 SelectedItem。输出没有显示任何绑定错误,我已经检查了 class 中是否存在 Int32。如何让 ComboBox 显示我的 Int32?
我不是 100% 确定,但您正在用 <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>
...
我有一个包含 Int32 对象集合的组合框。 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。
无论我尝试什么组合,切换集合和 SelectedItem,使用 SelectedValue 而不是 SelectedItem。 ComboBox 不会在 UI 中显示 SelectedItem。输出没有显示任何绑定错误,我已经检查了 class 中是否存在 Int32。如何让 ComboBox 显示我的 Int32?
我不是 100% 确定,但您正在用 <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>
...