【发布时间】:2021-05-31 10:50:51
【问题描述】:
基本上我拥有的是一个 wpf 组合框,它同时启用了 isTextSearchEnable 和 isEditable。我想允许使用键入他们想要查找的内容并过滤组合框项目以仅显示相关项目。
如果用户在 MP-1 中键入,它应该只显示包含这些文本的项目,而不显示不相关的项目。到目前为止,该代码适用于第二个字符,但不适用于第一个字符。任何想法或我在这里做错了什么?
到目前为止我的代码,
public class FilterViewModel
{
public IEnumerable<string> DataSource { get; set; }
public FilterViewModel()
{
DataSource = new[] { "MP-10001", "MP-10002", "MP-10003", "MP-10004", "XD-20001", "XD-20002", "XD-20003" };
}
}
public MainWindow()
{
InitializeComponent();
FilterViewModel vm = new FilterViewModel();
this.DataContext = vm;
}
private void FilteredCmb_KeyUp(object sender, KeyEventArgs e)
{
CollectionView cv = (CollectionView)CollectionViewSource.GetDefaultView(cmbBox.ItemsSource);
cv.Filter = ((o) =>
{
if (String.IsNullOrEmpty(cmbBox.Text)) return true;
else
{
if (((string)o).Contains(cmbBox.Text)) return true;
else return false;
}
});
cv.Refresh();
}
<Grid>
<ComboBox x:Name="cmbBox" HorizontalAlignment="Left" Margin="78,36,0,0" VerticalAlignment="Top" Width="362" IsEditable="True" IsTextSearchEnabled="True" Height="47" KeyUp="FilteredCmb_KeyUp" StaysOpenOnEdit="True" IsDropDownOpen="True" ItemsSource="{Binding DataSource}"/>
</Grid>
【问题讨论】:
标签: c# wpf visual-studio