【问题标题】:TwoWay Binding WPF Treeview双向绑定 WPF 树视图
【发布时间】:2015-07-10 01:42:13
【问题描述】:

WPF 初学者在这里。

我设法使用本文末尾显示的代码将 TreeView 控件绑定到 DataViewManager。最初填充 TreeView 控件时一切正常,但我想实现两种方式绑定,以便我可以使用文本框过滤掉不需要的 TreeView 项目。 我的问题是树视图没有更新,如果 我正在尝试使用这样的东西:

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

谁能帮我找出我在这里做错了什么?!

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}"
        />

DataViewManager 来自:

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

【问题讨论】:

    标签: c# wpf binding treeview two-way-binding


    【解决方案1】:

    TreeViewDataContext 尝试此绑定:

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

    【讨论】:

    • 谢谢,但没有任何改变...我也尝试了DataContext="{Binding ., Mode=TwoWay, Source={StaticResource dataVMProvider}, UpdateSourceTrigger=PropertyChanged}",但没有任何改进。
    猜你喜欢
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多