我有一个包含很多项目的列表框。我正在尝试创建一个搜索栏,以便用户可以键入他要查找的内容,而我的列表框仅显示与用户在文本框中键入的内容相关的项目。我是wp7的新手
答案 0 :(得分:0)
首先,您应该使用MVVM
进行正确的Layout
更新。然后使用其他属性并将其绑定到TextBox
。当属性更新时 - 升级另一个属性更改事件以更新ListBox
(代码段中的FirePropertyChanged("FooList");
)。
public class Foo
{
public string Name { get; set; }
}
ViewModel
中的:
public string SearchCriteria
{
get
{
return searchCriteria;
}
set
{
serchCriteria = value;
RaisePropertyChanged("SearchCriteria");
RaisePropertyChanged("FooList");
}
}
private List<Foo> fooList;
public List<Foo> FooList
{
get
{
return fooList.Where(x => x.Name.Contains(searchCriteria));
}
}
Xaml
中的:
<TextBox x:Name="searchText" Text={Binding SearchCriteria, Mode=TwoWay} />
<ListBox x:Name="elementsList" ItemsSource={Binding FooList, Mode=TwoWay}>
<ListBox.ItemTemplate>
...
</ListBox.ItemTemplate>
</ListBox>
<小时/> 一些帮助链接可以更好地理解
MVVM
模式: