【发布时间】:2010-04-06 17:43:03
【问题描述】:
我有一个名为 cbFileSize 的 WPF 组合框。我试图得到这样的选择值:
string tmp = cbFileSize.SelectedValue.ToString();
MessageBox.Show(tmp);
但是 tmp 被设置为“System.Windows.Control.ComboBoxItem: 16”。
我应该使用哪个函数来获得值“16”?
【问题讨论】:
我有一个名为 cbFileSize 的 WPF 组合框。我试图得到这样的选择值:
string tmp = cbFileSize.SelectedValue.ToString();
MessageBox.Show(tmp);
但是 tmp 被设置为“System.Windows.Control.ComboBoxItem: 16”。
我应该使用哪个函数来获得值“16”?
【问题讨论】:
string tmp = (cbFileSize.SelectedValue as ComboBoxItem).Content.ToString();
或
string tmp = (cbFileSize.SelectedItem as ComboBoxItem).Content.ToString();
编辑(了解更多信息): 如果您稍后将组合框值列表绑定到字符串集合,您将能够按照您的方式进行操作。但是,您在 ComboBox 中放置了一个 ComboBoxItems 集合,因此您的 selectedItem 或 selectedValue 将是一个 ComboBox 项:
<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()
获取值将是“此值”而不是 "System.Windows.Controls.ComboBoxItem: 这个值"
【讨论】: