Fle*_*lex 5 c# wpf xaml telerik radtreeview
我正在使用RadDataFilter来过滤RadTreeView的ItemSource,但是当执行此代码时,过滤器仅适用于不足的Root节点.有没有办法让过滤器在节点层次结构中流淌,以便为每个节点调用我的谓词?换句话说,过滤器可以作为一个整体应用于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>
Run Code Online (Sandbox Code Playgroud)
我知道Filter是ItemsCollection的一个属性(不是DP),它不是DependencyObject,所以DP Value继承不存在.树中的每个节点都有自己的ItemsCollection,它有自己的Filter.如何设置每个Node的过滤器?
我建议使用该NodeDataBound事件,该事件针对每个单独的节点(无论层次级别如何)触发。这样您就可以完全控制要对节点执行的过滤操作。
protected void RadTreeView1_NodeDataBound(object sender, RadTreeNodeEventArgs e)
{
e.Node.ToolTip = (e.Node.DataItem as DataRowView)["Description"].ToString();
}
Run Code Online (Sandbox Code Playgroud)
http://www.telerik.com/help/aspnet-ajax/treeview-server-node-databound.html
| 归档时间: |
|
| 查看次数: |
1833 次 |
| 最近记录: |