我不知道究竟你的過濾邏輯是什麼樣子,但你可以創建,綁定到這樣的過濾特性...
class item
{
...
List<item> childItems;
public IEnumerable<item> FileSystemItems
{
get
{
return childItems.Where(x => x is IFile || x is IFolder);
}
}
}
編輯:WP7.1不具備的IEnumerable 。凡
我手動編輯這並不能編譯這麼容忍我...但wihtout使用。凡可能是這個樣子......
public List<item> FileSystemItems
{
get
{
var list = new List<item>();
foreach (child in childItems)
{
if (child is IFile || child is IFolder)
list.Add(child);
}
return list;
}
}
顯然,無論您的實際過濾器策略如何,都可以用IFile和IFolder替換。
你的列表框結合會是這個樣子......(這是WPF,但據我所知,Silverlight是一樣的)
<ListBox ItemsSource="{Binding FileSystemItems}">
我的全WPF結合看起來像這樣..
<ListBox ItemsSource="{Binding FileSystemItems}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"></TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
您需要替換... {Binding Name}
零件...將Name
替換爲您要在列表框中顯示的任何屬性...或者如果您未使用ItemTemplate,則可以將其關閉。
FileSystemItemse如何被ListBox調用?它看起來像我應該調用它並通過自我傳遞給ListBox。 – crea7or
那麼,它不會像我看到的那樣創建新的列表? – crea7or
List.Where不支持Windows Phone 7.1 :(只有Wp8。http://msdn.microsoft.com/en-us/library/bb549418(v=vs.110).aspx – crea7or