我有ComboBox,它与一些对象的列表绑定。 ComboBox.SelectedItem 和 ComboBox.SelectedValue 会返回相同的对象实例,但我认为 SelectedItem 应该返回 ComboBoxItem 。< / p>
问题是我想获取所选文本,但该对象不是字符串,所以.ToString()将不起作用。
答案 0 :(得分:1)
ComboBox.SelectedItem返回列表中对象类型的实例,因此您必须将其强制转换为适当的类型,然后选择该实例的display属性。
OR
调用Combox.Text就足够了,但它需要SelectedItem!= null和ComboBox上定义的DisplayMemberPath。
如果您想要打开TextBox中的Selected文本,可以使用反射:
var propInfo = typeof(ComboBox).GetProperty("EditableTextBoxSite", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
var text = propInfo.GetValue(DataList) as TextBox;
var selText = text.SelectedText;
MessageBox.Show(selText);
答案 1 :(得分:1)
您可以将SelectedItem
绑定到属性,并在创建ComboBox SelectionChanged
时将Selected值设置为该属性。
<ComboBox Name="cbxSalesPeriods"
Width="220" Height="30"
ItemsSource="{Binding SalesPeriods}"
SelectedItem="{Binding SelectedSalesPeriod}"
SelectionChanged="_ComboBoxCurrencyExchange_SelectionChanged">
</ComboBox>
此处包含 SalesPeriodV 对象的名为 SalesPeriods 的ObservableCollection
被绑定为ItemsSource
的{{1}}。
ComboBox