我在WPF中创建了一个Datagrid,有8列和190行,它从csv文件加载数据。现在我已经创建了一个TextBox,我在其中写了一个单词,它必须在DataGrid中搜索它,并显示在同一个DataGrid1中找到的所有单词。我创建的代码在MainWindow.xaml中显示了一个错误。
这就是错误:
CS1061“type”不包含“name”的定义,并且找不到接受类型“type”的第一个参数的可访问扩展方法“name”(是否缺少using指令或程序集引用?).
注意:错误消息来自MSDN documentation,可能不会反映正确的消息,例如。“type”可以是实际类型而不是此通配符
下面是MainWindow.xaml代码:
<TextBox x:Name="TextBox_Cerca"
HorizontalAlignment="Left"
Margin="84,49,0,0"
TextWrapping="Wrap"
VerticalAlignment="Top"
Width="128"
RenderTransformOrigin="-0.775,-0.722"
Height="22"
TextChanged="TexttBox_Cerca_TextChanged"
KeyUp="FilterTextBox_CercaChanged" />
代码c#:
private void TexttBox_Cerca_TextChanged(object sender, TextChangedEventArgs e)
{
var filterTextBox = (TextBox)sender;
var filterText = filterTextBox.Text;
SetRowVisibilityByFilterText(filterText);
}
private void SetRowVisibilityByFilterText(string filterText)
{
GetVisibleRows(DataGrid1)
.ToList()
.ForEach(
x =>
{
if (x == null) return;
x.Visibility =
DataMatchesFilterText(x.Item as OttoColonne, filterText) ? Visibility.Visible : Visibility.Collapsed;
});
}
private bool DataMatchesFilterText(OttoColonne? ottoColonne, string filterText)
{
throw new NotImplementedException();
}
public static IEnumerable<DataGridRow> GetVisibleRows(DataGrid grid)
{
if (grid == null || grid.Items == null) yield break;
int count = grid.ItemsSource == null
? grid.Items.Count
: grid.ItemsSource.Cast<object>().Count();
for (int i = 0; i < count; i++)
{
yield return (DataGridRow)grid.ItemContainerGenerator.ContainerFromIndex(i);
}
}
class OttoColonne
{
public int ID { get; set; }
public string Squadra_casa { get; set; }
public string Squadra_fuoric { get; set; }
public string Ris_cas { get; set; }
public string Ris_fuorc { get; set; }
public string segni { get; set; }
public string Data { get; set; }
public string Giornate { get; set; }
}
1条答案
按热度按时间6xfqseft1#
在WPF中,您总是通过筛选集合视图来筛选数据集合。这产生了简单而高性能的代码。例如,专注于数据消除了处理容器虚拟化的需要。
下面的示例通过将筛选器委托分配给
ICollectionView.Filter
属性来隐藏与筛选器 predicate 不匹配的行。集合的默认集合视图是通过使用静态helper方法
CollectionViewSource.GetDefaultView
获得的:用户.cs
MainWindow.xaml.cs
MainWindow.xaml