WPF:获取ComboBox的值

3

我有一个名为cbFileSize的WPF组合框。 我尝试获取其所选值,如下所示:

string tmp = cbFileSize.SelectedValue.ToString();
MessageBox.Show(tmp);

但是tmp被设置为"System.Windows.Control.ComboBoxItem: 16"。

我应该使用哪个函数才能仅获取值"16"?

2个回答

4

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中。


难道不应该是: string tmp = (cbFileSize.SelectedItem as ComboBoxItem).Content.ToString(); ?? - spong
我编辑了我的帖子,包括我所做的假设。在这个假设下,无论是SelectedItem还是SelectedValue都可以使用。 - Scott

0

也可以直接使用ComboBoxItem的Tag方法/属性

<ComboBoxItem Content="This Value" Tag="This Value"/>

然后在代码后台:

GetValue=ComboBoxName.SelectedItem.Tag.ToString()

获取的值将是"This Value",而不是"System.Windows.Controls.ComboBoxItem: This Value"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接