我正在使用一个RadDataFilter来过滤RadTreeView的ItemSource,但是当执行这段代码时,过滤器只应用于根节点,这是不够的。有没有办法让过滤器在节点的层次结构中向下渗透,以便为每个节点调用我的谓词?换句话说,过滤器可以作为一个整体应用于TreeView吗?
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>我知道过滤器是ItemsCollection的一个属性(不是DP),它不是DependencyObject,所以DP值继承不存在。树中的每个节点都有自己的ItemsCollection,它有自己的过滤器。如何设置每个节点的过滤器?
发布于 2013-05-18 00:54:46
我建议使用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
https://stackoverflow.com/questions/13043680
复制相似问题