Silverlight - 如何在组合框中获取所选项目的文本

时间:2009-12-08 17:24:59

标签: silverlight combobox

一个适合你的人......

我是Silverlight的新手,并且真的缺少像DataTables这样的东西。我目前正在努力的是如何获取我的组合框当前所选项目的文本。 在winforms我会做:

ComboBox myCombo = new ComboBox.......
string selected = myCombo.Text;

我正在努力解决这个问题。

7 个答案:

答案 0 :(得分:9)

组合框的选定项目是当前持有的任何类型的项目。因此,如果将绑定设置为字符串集合,则所选项目将为字符串:

string mySelectedValue = ((string)MyComboBox.SelectedItem);

如果它是一个更复杂的对象,则需要强制转换并使用预期的对象。如果您使用列表框项目类XAML,例如:

<ComboBox x:Name="MyComboBox">
    <ComboBox.Items>
        <ComboBoxItem>
            <TextBlock Text="Hello World"/>
        </ComboBoxItem>
    </ComboBox.Items>
</ComboBox>

然后您将访问所选项目,如下所示:

string mySelectedValue = 
  ((TextBlock)((ComboBoxItem)MyComboBox.SelectedItem).Content).Text;

答案 1 :(得分:7)

是的,答案是使用myCombo.SelectionBoxItem.ToString()

答案 2 :(得分:3)

对于复杂对象,请使用DisplayMemberPath属性的反射:

var itemType = cbx.SelectedItem.GetType();
var pi = itemType.GetProperty(cbx.DisplayMemberPath);
var stringValue = pi.GetValue(cbx.SelectedItem, null).ToString();

答案 3 :(得分:1)

string txt=(comboboxID.SelectedItem as BindingClass).Text.ToString();

string value=(comboboxID.SelectedItem as BindingClass).Value.ToString();


 public class BindingClass
 {
     public string Text
       {
         set;
          get;
      }

     public string Value
       {
         set;
          get;
      }
 }

答案 4 :(得分:1)

((ComboBoxItem)comboBox1.SelectedItem).Content.ToString()

我通过这个声明得到了它。

答案 5 :(得分:0)

如果您有一个简单的组合框用于字符串数组,您可以使用

获取所选字符串
(string)e.AddedItems[0];

假设我有一个产品列表组合,我想知道所选的产品名称。所以在SelectionChanged事件中,我编写了以下代码:

private void productCombo_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
            string product_type=(string)e.AddedItems[0];
        }

答案 6 :(得分:-1)

myCombo.SelectedItem.Content

将返回ComboBoxItem的内容。这可能是一个TextBlock等,具体取决于你在那里的内容,以及你用于项目模板的内容。