5

RadDataFilter を使用して RadTreeView の ItemSource をフィルター処理していますが、このコードを実行すると、フィルターはルート ノードにのみ適用されますが、これでは不十分です。すべてのノードに対して述語が呼び出されるように、ノードの階層内でフィルターを細流にする方法はありますか? つまり、フィルターは TreeView 全体に適用できますか?

RadDataFilter: Source は 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>

Filter は DependencyObject ではない ItemsCollection のプロパティ (DP ではない) であるため、DP 値の継承はありません。ツリー内の各ノードには、独自の Filter を持つ独自の ItemsCollection があります。すべてのノードのフィルターを設定するにはどうすればよいですか?

4

1 に答える 1

0

NodeDataBound(階層レベルに関係なく) 個々のノードごとに発生するイベントを使用することをお勧めします。このようにして、ノードに対して実行するフィルタリングを完全に制御できます。

protected void RadTreeView1_NodeDataBound(object sender, RadTreeNodeEventArgs e) 
{     
    e.Node.ToolTip = (e.Node.DataItem as DataRowView)["Description"].ToString(); 
}

http://www.telerik.com/help/aspnet-ajax/treeview-server-node-databound.html

于 2013-05-17T16:54:46.050 に答える