简体   繁体   English

双向绑定WPF树视图

[英]TwoWay Binding WPF Treeview

WPF beginner here. WPF初学者在这里。

I managed to bind a TreeView control to a DataViewManager using the code shown at the end of this post. 我设法使用本文结尾处显示的代码将TreeView控件绑定到DataViewManager。 Everything works fine when populating the TreeView control initially but I want to implement two way binding so that I can use a textbox to filter out unwanted TreeView items. 最初填充TreeView控件时,一切正常,但我想实现两种方式的绑定,以便可以使用文本框过滤掉不需要的TreeView项。 My problem is that the treeview isn't updated if I'm trying to use something like this: 我的问题是,如果我尝试使用以下内容,则树形视图不会更新:

        private void SearchTree_TextChanged(object sender, TextChangedEventArgs e)
        {
            if(SearchTree.Text.Length>0)
            Command.dvm.DataViewSettings["Categories"].RowFilter = "CategoryName LIKE '%"+SearchTree.Text+"%'";
        }

Can anyone please help me find out what I'm doing wrong here?! 谁能帮我找出我在这里做错了吗?

Xaml: Xaml:

...
    <UserControl.Resources>
        <ObjectDataProvider 
            x:Key="dataVMProvider" 
            MethodName="CreateDataVM" 
            ObjectType="{x:Type local:DataVMCreator}" 
            />


        <DataTemplate x:Key="InstancesTemplate">
            <TextBlock Text="{Binding InstanceUID}"/>
        </DataTemplate>

        <HierarchicalDataTemplate 
            x:Key="SymbolsTemplate"
            ItemsSource="{Binding Symbols2Instances}"
            ItemTemplate="{StaticResource InstancesTemplate}"
            >
            <TextBlock Text="{Binding SymbolName}"/>
        </HierarchicalDataTemplate>

        <HierarchicalDataTemplate
            x:Key="FamiliesTemplate"
            ItemsSource="{Binding Families2Symbols}"
            ItemTemplate="{StaticResource SymbolsTemplate}"
            >
            <TextBlock Text="{Binding FamilyName}"/>
        </HierarchicalDataTemplate>

        <HierarchicalDataTemplate
            x:Key="CategoriesTemplate"
            ItemsSource="{Binding Categories2Families}"
            ItemTemplate="{StaticResource FamiliesTemplate}"
            >
            <TextBlock Text="{Binding CategoryName}"/>
        </HierarchicalDataTemplate>

    </UserControl.Resources>

...

        <TreeView 
            x:Name="ElementsTree" 
...

            DataContext="{StaticResource dataVMProvider}"
            ItemsSource="{Binding Categories}"
            ItemTemplate="{StaticResource CategoriesTemplate}"
        />

The DataViewManager comes from: DataViewManager来自:

    public static class DataVMCreator
    {
        public static DataViewManager CreateDataVM()
        {
            return Command.dvm;
        }
    } 

尝试对TreeViewDataContext进行此绑定:

DataContext="{Binding Source={StaticResource dataVMProvider}}"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM