我想使用filterComboBox
绑定我的数据。为此,我创建了 a和 a 。在后面的代码中,我读取了一个文件并生成了 Channel 类的对象,这些对象存储为. 尽管编译器没有抛出错误,但过滤不能正常工作。如果我写了一些东西,数据就消失了,如果我擦除,它又回来了。在尝试和尝试之后,我意识到如果我开始输入“myNamespace.myChannel”(Unico.Canal),数据仍然存在,但不要过滤。确实是奇怪的行为。我怀疑我把东西放错了地方。TextBox
ComboBox
ComboBox
(为了更好地理解我已经翻译了代码,Canal=Channel)
这是我的代码方案:
namespace Unico
{
public partial class ControlesArchivo : UserControl, INotifyPropertyChanged
{
public ControlesArchivo()
{
InitializeComponent();
}
public ObservableCollection<Channel> myListChannels //with INotifyPropertyChanged implemented. But I think I don't need it.
private void loadButton_Click(object sender, RoutedEventArgs e)
{
File loadedFile = new File();
loadedFile.read(); //Generates a bunch of data in lists.
foreach (Channel mychan in loadedFile.channels) //Just duplicating the data (maybe this can be avoided)
{
myListChannels.Add(mychan);
}
var view = CollectionViewSource.GetDefaultView(this.miListaDeCanales);
view.Filter = delegate(object o)
{
if (o.ToString().Contains(myTextBox.Text)) //Delicate place
{
return true;
}
return false;
};
myComboBox.ItemsSource = view;
DataContext = this;
}
private void myTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
((ICollectionView)myComboBox.ItemsSource).Refresh();
myComboBox.SelectedIndex = 0;
}
}
}
数据在 XAML 中绑定:
ItemsSource="{Binding view}"
编辑:我想我知道问题出在哪里:我没有指定要过滤的属性。我的意思是,您在 ComboBox 中看到的是myListChannelschannelName
中class Channel
列出的属性。当我设置过滤器时,我不应该让我知道我在过滤什么吗?我怎么能写这个?非常感谢你。