我尝试使用CollectionViewSource
和TreeView
。以下是代码的相关部分:
XAML(部分 - 请告诉我是否需要更多信息):
<TreeView x:Name="Projects"
ItemsSource="{Binding FilteredPVMs}"
</TreeView>
CS c&#tor; tor:
public CollectionViewSource FilteredPVMs { get; protected set; }
然后初始化:
FilteredPVMs = new CollectionViewSource() { Source = PVMs };
然后我有了过滤器:
FilteredPVMs.View.Filter = o =>
{
var retVal = false;
try
{
if (val != null)
{
if (
// logic for filter...
)
retVal = true;
else retVal = false;
}
return retVal;
}
catch (Exception)
{
}
return retVal;
};
FilteredPVMs.View.Refresh();
}
我在PVM上有3个项目。调试时,我可以看到我经历了3次过滤方法(对于每个项目)。对于其中一个我得到了真实而对其他人来说它是假的。
我也看到FilteredPVMs.View.Count是1:in&#34; watch&#34; window:((System.Windows.Data.ListCollectionView)(FilteredPVMs.View))。Count = 1
所以我希望在UI中看到1个项目。但是,在用户界面中,我看不到任何项目。关于我做错了什么的任何建议?
答案 0 :(得分:0)
修复XAML(Binding FilteredPVMs.View而不是Binding FilteredPVM)解决了这个问题。
<TreeView x:Name="Projects"
ItemsSource="{Binding FilteredPVMs.View}"
</TreeView