【问题标题】:Get wpf combobox selected value获取 wpf 组合框选定值
【发布时间】:2013-10-27 13:17:29
【问题描述】:

如何从下面的示例中将选定的值(例如Option1)作为string 获取。我在 Google 上尝试了很多建议,但无法获得字符串。

XAML:

<ComboBox x:Name="selectOption" Text="Select Option" 
                 SelectionChanged="selectOption_SelectionChanged" 
                 SelectedValue="{Binding VMselectedOption, Mode=TwoWay}" >
    <ComboBoxItem Name="cbb1">Option1</ComboBoxItem>
    <ComboBoxItem Name="cbb2">Option2</ComboBoxItem>
    <ComboBoxItem Name="cbb3">Option3</ComboBoxItem>
</ComboBox>

代码隐藏:

private void selectOption_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   var selectedValue = selectOption.SelectedValue; 
}

//elsewhere in code
var test = viewModel.VMselectedOption;

selectedValue 和 test 返回字符串“System.Windows.Controls.ComboBoxItem: Option1”而不是“Option1

这应该很简单,但我就是无法让它工作或看看有什么问题?

【问题讨论】:

标签: c# wpf


【解决方案1】:

你应该设置 SelectedValuePath="Content"。

<ComboBox x:Name="selectOption" Text="Select Option" 
                 SelectionChanged="selectOption_SelectionChanged" 
                 SelectedValue="{Binding VMselectedOption, Mode=TwoWay}" 
                 SelectedValuePath="Content">
    <ComboBoxItem Name="cbb1">Option1</ComboBoxItem>
    <ComboBoxItem Name="cbb2">Option2</ComboBoxItem>
    <ComboBoxItem Name="cbb3">Option3</ComboBoxItem>
</ComboBox>

【讨论】:

  • 这是最好和最简单的方法。谢谢
【解决方案2】:

您不应手动插入组合框项目。使用ItemsSource 设置它们。

基本上你应该创建一个选项列表(或代表选项的对象)并将它们设置为ItemsSource,这样你的SelectedItem将完全是被选中的选项,而不是自动创建的包装ComboboxItem

【讨论】:

  • 你的是我在这里看到的唯一理智的答案。
  • @ooo:很高兴它有帮助。考虑到内容和演示的分离,使用ItemsSource 是一个不错的选择。
【解决方案3】:
string Value="";
if(myComboBox.SelectedIndex>=0) 
  Value=((ComboBoxItem)myComboBox.SelectedItem).Content.ToString();

【讨论】:

  • 最好检查一下:if (((ComboBoxItem)myComboBox.SelectedItem).Content != null)。因为如果您对某些元素使用 IsSelected="True",则初始化后 Content 将为空。
【解决方案4】:

更新您的代码以获取 comboboxItem 的内容。

var selectedValue = ((ComboBoxItem)selectOption.SelectedItem).Content.ToString();

【讨论】:

    【解决方案5】:

    ComboBoxItem.Content 是 Object 类型,因此您需要自己投射该项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 2014-06-20
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      相关资源
      最近更新 更多