RadDataFilterを使用してRadTreeViewのItemSourceをフィルタリングしていますが、このコードを実行すると、フィルタはルートノードにのみ適用されます。私の述語がすべてのノードに対して呼び出されるように、ノードの階層内でフィルタを細かくする方法がありますか?言い換えれば、フィルタは全体としてTreeViewに適用できますか?Filter RadTreeView Items by RadDataFilter
RadDataFilter:ソースがViewModelのObservableCollectionにバインドされています。
<telerik:RadDataFilter Name="radDataFilter"
telerik:StyleManager.Theme="Metro"
Grid.Row="2"
VerticalAlignment="Top"
HorizontalAlignment="Center"
MaxHeight="250"
Width="500"
BorderBrush="SkyBlue"
BorderThickness="2"
Source="{Binding SampleCollection}"
Margin="1" />
the RadTreeView:
<telerik:RadTreeView x:Name="RadTreeView1"
VerticalAlignment="Top"
HorizontalAlignment="Stretch"
Grid.Row="1"
ToolBar.OverflowMode="Always"
BorderBrush="SkyBlue"
BorderThickness="2"
MinHeight="300"
MaxHeight="500"
MinWidth="500"
telerik:StyleManager.Theme="Metro"
ItemsSource="{Binding FilteredSource,ElementName=radDataFilter}">
>
<telerik:RadTreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<TextBlock x:Name="Item" Text="{Binding SampleCode}">
</TextBlock>
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding IsDescribed, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Value="true">
<Setter TargetName="Item" Property="Foreground" Value="Red"/>
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>
</telerik:RadTreeView.ItemTemplate>
</telerik:RadTreeView>
私はフィルターのDependencyObjectないので、DP値の継承がないItemsCollectionの性質(DPではない)であることが知られています。ツリーの各ノードには独自のItemsCollectionがあり、独自のFilterを持っています。すべてのノードのフィルタを設定するにはどうすればよいですか?
あなたはすべての子供にあなたのフィルタを適用し、その後LoadOnDemand機能を使用することはできますか?理論的には、特にデータセットが大きくなる場合は、パフォーマンスを向上させるはずです。 –
この質問をしてください。私はtelerikフォーラムで意味します。彼らはおそらく答えを持っています。 – Cagatay