Easy one for you all...
I'm new to Silverlight and really missing stuff like DataTables and things. What I'm also currently struggling with is how to get the 开发者_开发百科text of my combobox's currently selected item. In winforms I would have done:
ComboBox myCombo = new ComboBox.......
string selected = myCombo.Text;
I'm struggling how to get this info out.
The selected item of your combo box is whatever type of item is currently holding. So if you set the binding to a collection of strings, then the selected item will be a string:
string mySelectedValue = ((string)MyComboBox.SelectedItem);
If it is a more complex object you will need to cast and use the expected object. If you have XAML using the list box item class, like:
<ComboBox x:Name="MyComboBox">
<ComboBox.Items>
<ComboBoxItem>
<TextBlock Text="Hello World"/>
</ComboBoxItem>
</ComboBox.Items>
</ComboBox>
Then you would access the selected item like this:
string mySelectedValue =
((TextBlock)((ComboBoxItem)MyComboBox.SelectedItem).Content).Text;
Right, the answer is to use myCombo.SelectionBoxItem.ToString()
For a complex object, use reflection with the DisplayMemberPath property:
var itemType = cbx.SelectedItem.GetType();
var pi = itemType.GetProperty(cbx.DisplayMemberPath);
var stringValue = pi.GetValue(cbx.SelectedItem, null).ToString();
((ComboBoxItem)comboBox1.SelectedItem).Content.ToString()
I got it worked by this statement.
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;
}
}
If you have a simple combobox for an array of strings, you can get the selected string using
(string)e.AddedItems[0];
Suppose I have a product list combo and I want to know the selected product name. So in the SelectionChanged Event I write the following code:
private void productCombo_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
string product_type=(string)e.AddedItems[0];
}
myCombo.SelectedItem.Content
will return the content of the ComboBoxItem. This could be a TextBlock, etc. depending on what you have in there, and what you are using for an item template.
精彩评论