首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按RadDataFilter过滤RadTreeView项目

按RadDataFilter过滤RadTreeView项目
EN

Stack Overflow用户
提问于 2012-10-24 13:53:26
回答 1查看 2.1K关注 0票数 5

我正在使用一个RadDataFilter来过滤RadTreeView的ItemSource,但是当执行这段代码时,过滤器只应用于根节点,这是不够的。有没有办法让过滤器在节点的层次结构中向下渗透,以便为每个节点调用我的谓词?换句话说,过滤器可以作为一个整体应用于TreeView吗?

RadDataFilter:源代码绑定到ViewModel中的ObservableCollection。

代码语言:javascript
复制
<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>

我知道过滤器是ItemsCollection的一个属性(不是DP),它不是DependencyObject,所以DP值继承不存在。树中的每个节点都有自己的ItemsCollection,它有自己的过滤器。如何设置每个节点的过滤器?

EN

回答 1

Stack Overflow用户

发布于 2013-05-18 00:54:46

我建议使用NodeDataBound事件,该事件为每个单独的节点触发(无论层次结构如何)。这样,您就可以完全控制要对节点执行的过滤操作。

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13043680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档