C# ComboBox.SelectedItem不是ComboBox项
我有一个ComboBox,我用一些对象的列表绑定它ComboBox.SelectedItem和ComboBox.SelectedValue返回相同的对象实例,但我认为SelectedItem应该返回ComboBoxItemC# ComboBox.SelectedItem不是ComboBox项,c#,wpf,xaml,combobox,C#,Wpf,Xaml,Combobox,我有一个ComboBox,我用一些对象的列表绑定它ComboBox.SelectedItem和ComboBox.SelectedValue返回相同的对象实例,但我认为SelectedItem应该返回ComboBoxItem 问题是我想获取所选文本,但对象不是字符串,因此。ToString()将不起作用。ComboBox.SelectedItem返回列表中对象类型的实例,因此您必须将其强制转换为适当的类型,然后选择该实例的display属性 或 只需调用Combox.Text就足够了,但它需要Se
问题是我想获取所选文本,但对象不是字符串,因此。ToString()将不起作用。ComboBox.SelectedItem返回列表中对象类型的实例,因此您必须将其强制转换为适当的类型,然后选择该实例的display属性 或 只需调用Combox.Text就足够了,但它需要SelectedItem!=空值和组合框上定义的DisplayMemberPath 如果要在打开的文本框中显示选定的文本,可以使用反射:
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);
您可以将
SelectedItem
绑定到属性,并在进行ComboBox SelectionChanged
时将所选值设置为该属性
<ComboBox Name="cbxSalesPeriods"
Width="220" Height="30"
ItemsSource="{Binding SalesPeriods}"
SelectedItem="{Binding SelectedSalesPeriod}"
SelectionChanged="_ComboBoxCurrencyExchange_SelectionChanged">
</ComboBox>
现在还不清楚您在问什么-您肯定知道项目类型是什么,以及如何将其转换为字符串表示形式吗?您应该提供一个示例来演示您的问题和您的期望。@CharlesMager我在问题中清楚地提到了“我想获取所选文本”。如果你知道如何获取combobox的选定文本,请提供帮助,如果不知道,请让其他人回答。实际上问题的标题不清楚。为什么不能使用ComboBox.Text将所选文本作为字符串获取?@VictorSharovatov我尝试过,但它返回空字符串“”我之所以使用该标题,是因为我不理解SelectedItem和ComboBoxItem之间的区别,在我的情况下,它们是相同的,因此您需要尝试使用ComboBox.SelectedText。这篇文章应该对你有帮助。
private ObservableCollection<SalesPeriodV> salesPeriods = new ObservableCollection<SalesPeriodV>();
public ObservableCollection<SalesPeriodV> SalesPeriods
{
get { return salesPeriods; }
set { salesPeriods = value; OnPropertyChanged("SalesPeriods"); }
}
private SalesPeriodV selectedItem = new SalesPeriodV();
public SalesPeriodV SelectedItem
{
get { return selectedItem; }
set { selectedItem = value; OnPropertyChanged("SelectedItem"); }
}
private void _ComboBoxCurrencyExchange_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ComboBox cb = (ComboBox)sender;
SelectedItem = (SalesPeriodV)(cb.SelectedItem);
string text = cb.SelectedValue.ToString();
}