【问题标题】:WPF - Bind Teeview to ListWPF - 将 Teeview 绑定到列表
【发布时间】:2015-11-19 18:04:20
【问题描述】:

我有以下任务: 创建用户可以通过应用程序 UI 修改的树 - 添加新项目,删除现有项目。 TreeView 控件应绑定到后面代码中的适当列表。

树中的项目是 CriteriaItem 对象。

public class Subcriteria
{
    public Subcriteria(string header)
    {
        Title = header;
        subcriterias = new ObservableCollection<Subcriteria>();
    }
    public string Title { get; set; }
    public ObservableCollection<Subcriteria> subcriterias { get; set; }
}

public class Criteria
{
    public Criteria(string header)
    {
        Title = header;
        criterias = new ObservableCollection<Subcriteria>();
    }
    public string Title { get; set; }
    public ObservableCollection<Subcriteria> criterias { get; set; }
}


public MainWindow()
{
    InitializeComponent();

    public ObservableCollection<Alternative> _alt = new ObservableCollection<Alternative>();
    Criteria root = new Criteria("root");            
    criteriaBundle.Add(root);
    trvMenu.DataContext = _alt;
    }

XAML:

    <TreeView Name="trvMenu" Grid.Row="2" ItemsSource="{Binding criteriaBundle}">
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate  ItemsSource="{Binding criterias}">
                <TextBlock Text="{Binding Title}" />
                <HierarchicalDataTemplate.ItemTemplate>
                    <HierarchicalDataTemplate ItemsSource="{Binding subcriterias}">
                        <TextBlock Text="{Binding Title}" />
                        <HierarchicalDataTemplate.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Path=Title}"/>
                            </DataTemplate>
                        </HierarchicalDataTemplate.ItemTemplate>
                    </HierarchicalDataTemplate>
                </HierarchicalDataTemplate.ItemTemplate>
             </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>          
</TreeView>

但它不起作用。你能帮我装订吗?

【问题讨论】:

  • 首先,TreeView的DataContext是什么?
  • @Spawn CriteriaItem 的标题
  • 根在你的数据上下文中是公共属性吗?
  • 你能发布更多代码吗?究竟什么不起作用?

标签: c# wpf xaml binding treeview


【解决方案1】:

您应该像这样更改您的代码隐藏:

1) 如果你使用绑定,你应该设置 DataContext

2) 绑定中只能使用属性,不能使用字段

我的个人建议,您应该阅读有关绑定基本和 MVVM 的内容

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = this;

        criteriaBundle = new ObservableCollection<CriteriaItem> {new CriteriaItem("root")};
    }

    public ObservableCollection<CriteriaItem> criteriaBundle { get; set; }
}

编辑:

【讨论】:

  • 感谢您的建议。我阅读了一些有关此主题的资源,但它们没有提及有关 DataContext 的任何内容
  • @Irina 我的回答对你有帮助吗?
  • @Irina 我测试了代码并且它可以工作。我附上了图片。确保你做得很好
猜你喜欢
  • 2011-08-28
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 2011-05-07
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-08
相关资源
最近更新 更多