Silverlight的 - 如何获取所选项目的文本的组合框
轻松一为大家...Silverlight的 - 如何获取所选项目的文本的组合框
我是新来的Silverlight和数据表一样,事情真的错过的东西。我目前正在努力的是如何获得我的组合框当前选定项目的文本。 在的WinForms我会做:
ComboBox myCombo = new ComboBox.......
string selected = myCombo.Text;
我挣扎如何得到这个信息的。
组合框的选择产品的物品类型,目前持股。所以,如果你设置绑定为字符串的集合,然后选定项目将是一个字符串:
string mySelectedValue = ((string)MyComboBox.SelectedItem);
如果它是一个更复杂的对象,你需要转换和使用的预期目标。如果您在使用XAML列表框中的项目类,如:用的DisplayMemberPath属性
string mySelectedValue =
((TextBlock)((ComboBoxItem)MyComboBox.SelectedItem).Content).Text;
myCombo.SelectedItem.Content
将返回ComboBoxItem的内容。这可能是一个TextBlock等等,具体取决于你在那里的内容,以及你用于项目模板的内容。
不,不起作用1)因为SelectedItem不是一个字符串,2)即使你对它做了.ToString(),它也会返回System.Windows.Controls.ComboBoxItem。我知道我可以解析这个并获取信息,但肯定有一个更简单的方法? – Calanus 2009-12-08 17:39:26
对,答案是使用myCombo.SelectionBoxItem.ToString()
确认最新silverlight作品 – 2014-03-12 17:54:01
对于一个复杂的对象,使用反射:
<ComboBox x:Name="MyComboBox">
<ComboBox.Items>
<ComboBoxItem>
<TextBlock Text="Hello World"/>
</ComboBoxItem>
</ComboBox.Items>
</ComboBox>
然后,你就可以访问选择的项目是这样
var itemType = cbx.SelectedItem.GetType();
var pi = itemType.GetProperty(cbx.DisplayMemberPath);
var stringValue = pi.GetValue(cbx.SelectedItem, null).ToString();
非常感谢,您的解决方案是适用于所有情况的解决方案 – sepisoad 2012-01-27 03:54:51
如果你有一个字符串数组的简单组合框,你可以使用所选的字符串
(string)e.AddedItems[0];
假设我有一个产品列表组合,并且我想知道选定的产品名称。所以在SelectionChanged事件我写了下面的代码:
private void productCombo_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
string product_type=(string)e.AddedItems[0];
}
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;
}
}
专用套件;将设置属性字段为私人。 – PhilipChrist 2013-10-11 08:12:06
((ComboBoxItem)comboBox1.SelectedItem).Content.ToString()
我得到了它的工作由本声明。
我认为卡拉努斯直截了当地回答问题 – Raghurocks 2012-12-20 05:43:54
我的回答是3岁。我一直没有在Silverlight中工作过一段时间,所以Calanus的答案可能适用于当前版本的Silverlight;我无法对此发表评论。当我回答时,我认为它不适用于像这里描述的那种丰富的组合框项目。 – 2013-01-15 17:52:01
不适用于最新的silverlight。得到“无法投入”System.Windows.Controls.ComboBoxItem“类型的对象来键入”System.String“。” – 2014-03-12 17:52:07