【发布时间】:2016-12-07 11:08:13
【问题描述】:
我想获取包含搜索文本的项目。 Lisview 应该在带有movieTitle 的列表视图中向我显示包含搜索文本的项目(文本)。 我有这个网格:
<Grid x:Name="GridSearchMovie" Grid.Row="2" Visibility="Hidden" Background="White">
<Grid.RowDefinitions>
<RowDefinition Height="25"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBox x:Name="txtSearchMovie" TextChanged="txtSearch_TextChanged"/>
<ListView x:Name="lvSearchMovie" Grid.Row="1">
<ListView.ItemTemplate>
<DataTemplate>
<WrapPanel>
<TextBlock Text="{Binding movieTitle}"/>
</WrapPanel>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Height" Value="50"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
</Grid>
我在文本框中输入一个单词,Lisview 会显示包含 Textbox.Text 的项目。这是搜索的代码:
lvSearchMovie.ItemsSource = Movies;
TextBox t = (TextBox)sender;
string Filter = txtSearchMovie.Text;
ICollectionView cv = CollectionViewSource.GetDefaultView(lvMovies.ItemsSource);
cv.Filter = o =>
{
Movie m = o as Movie;
return (m.movieTitle.ToUpper().Contains(Filter.ToUpper()) ||
m.movieDirector.ToUpper().Contains(Filter.ToUpper()) ||
m.movieActor.ToUpper().Contains(Filter.ToUpper()) ||
m.movieGenre.ToUpper().Contains(Filter.ToUpper()) ||
m.movieTime.ToString().ToUpper().Contains(Filter.ToUpper()) ||
m.movieDate.ToString().ToUpper().Contains(Filter.ToUpper()) ||
m.movieStudio.ToUpper().Contains(Filter.ToUpper()) ||
m.movieFSK.ToUpper().Contains(Filter.ToUpper()) ||
m.movieRating.ToUpper().Contains(Filter.ToUpper()) ||
m.movieSeenTo.ToUpper().Contains(Filter.ToUpper()));
};
我想向 Listview Item WrapPanel 添加一个 Textblock,它显示包含 Word。我如何得到这些包含 Textbox.Text 的单词?
电影类:
public class Movie
{
public int movieID;
public string moviePicture;
public string movieTitle {get; set;}
public string movieDirector;
public string movieActor;
public string movieGenre;
public string movieTime;
public string movieDate;
public string movieStudio;
public string movieFSK;
public string movieRating;
}
列出电影:
List<Movie> Movies = new List<Movie>();
【问题讨论】:
-
这是一个包含电影对象的列表
-
它是一个可观察的集合吗?
-
好的,我注意到的第一个问题,列表没有实现 INotifyChange 接口,这意味着您的列表视图在更改时不会更新 UI。
-
但它有效,我有一个 Refresh 方法可以实现 Itemssource,这不是问题