ComboBox.SelectedItem不是ComboBoxItem

时间:2016-10-02 08:02:52

标签: c# wpf xaml combobox

我有ComboBox,它与一些对象的列表绑定。 ComboBox.SelectedItem ComboBox.SelectedValue 会返回相同的对象实例,但我认为 SelectedItem 应该返回 ComboBoxItem 。< / p>

问题是我想获取所选文本,但该对象不是字符串,所以.ToString()将不起作用。

2 个答案:

答案 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