簡體   English   中英

WPF-將Teeview綁定到列表

[英]WPF - Bind Teeview to List

我有以下任務:創建用戶可以通過應用程序UI修改的樹-添加新項目,刪除現有項目。 TreeView控件應在后面的代碼中綁定到適當的List。

樹中的項目是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>

但這是行不通的。 您能幫我裝訂嗎?

您應該像這樣更改后台代碼:

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; }
}

編輯: 在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM