我有一个名为cbFileSize的WPF组合框。 我尝试获取其所选值,如下所示:
string tmp = cbFileSize.SelectedValue.ToString();
MessageBox.Show(tmp);
但是tmp被设置为"System.Windows.Control.ComboBoxItem: 16"。
我应该使用哪个函数才能仅获取值"16"?
string tmp = (cbFileSize.SelectedItem as ComboBoxItem).Content.ToString();
或者string tmp = (cbFileSize.SelectedValue as ComboBoxItem).Content.ToString();
编辑(更多信息): 如果您稍后将组合框值的列表绑定到字符串集合,则可以按照您所做的方式执行此操作。但是,您正在将ComboBoxItems集合放入ComboBox中,因此您的selectedItem或selectedValue将是ComboBox Item:
<ComboBox x:Name="comboBox">
<ComboBoxItem>15</ComboBoxItem>
<ComboBoxItem>16</ComboBoxItem>
<ComboBoxItem>17</ComboBoxItem>
</ComboBox>
我猜您正在进行类似上述的操作。由于您的选择项是ComboBoxItem,因此您只需要将其转换并获取内容(即您的数字值)。
同样,所提出的解决方案将适用于上述设置,但是,也许在将来,您会将值绑定到所需的类型(字符串或整数)而不是手动将ComboBox项放入ComboBox中。
也可以直接使用ComboBoxItem的Tag方法/属性
<ComboBoxItem Content="This Value" Tag="This Value"/>
然后在代码后台:
GetValue=ComboBoxName.SelectedItem.Tag.ToString()
获取的值将是"This Value",而不是"System.Windows.Controls.ComboBoxItem: This Value"