0

我刚刚在这个网站上发现了一个帖子,回答者试图回答一个类似的问题。帖子的链接是:WPF ComboBox with IsEditable="True" - 我怎样才能表明没有找到匹配项?

所以,我试着按照答案没有。1 user1234567 的主题 4。我最终遇到了错误。

1) 列表不包含 ElementAt 的定义。在下面的行:

if(textBox.Text != "" && items.ElementAt(i).StartsWith(textBox.Text))

我尝试使用以下行来解决该错误:

if(textBox.Text != "" && items[i].StartsWith(textBox.Text))

因此,所有编译时错误都消失了。

2)我在下面提到的行上收到运行时错误:

items.Add(((ComboBoxItem)cbEffectOn.Items.GetItemAt(i)).Content.ToString());

错误说:Cannot convert string to ComboBoxItem.

如果你们中的任何人有更好的解决方案或可以解决上述错误,请提出建议。

更新

这是组合框的 XAML:

<ComboBox x:Name="cbEffectOn" IsEditable="True" 
            ItemsSource="{Binding Path=EffectName, 
            Mode=TwoWay, UpdateSourceTrigger=Default}" 
            Grid.Column="4" Grid.Row="5" KeyUp="myComboBox_KeyUp"/>

更新 2

这是第二个问题的解决方案:

string我第一次尝试尝试施法ComboBoxItem。但是现在我知道 s 中的所有项目ComboBox都是strings 所以我尝试了下面的代码并且它有效:

items.Add(cbEffectOn.Items.GetItemAt(i).ToString());
4

1 回答 1

1

当您遇到类似的错误时,您可以按照这个简单的建议来修复它们。您的第一个错误List说不包含ElementAt. 要解决此问题,请访问 MSDN 网站并搜索“ElementAt方法”...事实上,您甚至可以在任何搜索引擎中搜索它,您应该会在结果顶部看到一个 MSDN 页面...在此案例,Enumerable.ElementAt<TSource>方法页面。

单击链接将带您进入该页面,您将看到该ElementAt方法位于System.Linq名称空间中,因此接下来要做的是检查您是否已将其添加到代码中:

using System.Linq;

对于下一个错误,无法转换stringComboBoxItem,您需要做的就是查看您的代码:

items.Add(((ComboBoxItem)cbEffectOn.Items.GetItemAt(i)).Content.ToString());

您显然是在尝试将某些内容转换为ComboBoxItem... 但错误表明它是string. 如果我们再看一遍,我们可以看到ToString()将值转换为string...的方法,所以也许我们应该删除它?

items.Add(((ComboBoxItem)cbEffectOn.Items.GetItemAt(i)).Content);

当然,这也可能不起作用,具体取决于您的Content财产中究竟有什么。祝你项目的其余部分好运。

于 2013-10-25T08:58:33.430 回答