0

我有一个包含许多项目的列表框。我正在尝试创建一个搜索栏,以便用户可以输入他正在寻找的内容,而我的列表框仅显示与用户在文本框中输入的内容相关的那些项目。我是 wp7 的新手

4

1 回答 1

0

首先,您应该使用MVVM适当的Layout更新。然后使用附加属性并将其绑定到TextBox. 更新属性时 - 引发另一个属性更改事件以更新ListBoxFirePropertyChanged("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模式:

于 2012-07-22T09:20:26.303 回答