Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ComboBox.SelectedItem不是ComboBox项_C#_Wpf_Xaml_Combobox - Fatal编程技术网

C# ComboBox.SelectedItem不是ComboBox项

C# 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

我有一个ComboBox,我用一些对象的列表绑定它ComboBox.SelectedItemComboBox.SelectedValue返回相同的对象实例,但我认为SelectedItem应该返回ComboBoxItem


问题是我想获取所选文本,但对象不是字符串,因此。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();
}