将treeview绑定到对象

时间:2013-06-07 11:03:26

标签: c# wpf data-binding

对WPF来说是新手,所以我只是想在树视图的上下文中探讨一些绑定。首先是一些代码。

在我的主窗口中,我添加了我的命名空间;

xmlns:WPFFM="clr-namespace:WPFFM"

我的班级我试图通过类型绑定;

namespace WPFFM
{
    public class Asset
    {
        public string ID;
        public string name;
        public string room;
        public string description;

        public Asset(string AssetID, string AssetName, string AssetRoom, string AssetDescription)
        {
            ID = AssetID;
            name = AssetName;
            room = AssetRoom;
            description = AssetDescription;
        }
    }
}

我的主要课程有我的名单及其人口;

namespace WPFFM
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        DBConnector dbConnector;
        public static List<Asset> assetList;

        public MainWindow()
        {
            InitializeComponent();
            Populate();
        }

        public void Populate()
        {
            assetList = new List<Asset>();
            dbConnector = new DBConnector();
            DataTable assetDatatable = new DataTable();


            assetDatatable = dbConnector.GetAssets();

            foreach (DataRow row in assetDatatable.Rows)
            {
                Asset assetToAdd = new Asset(row["assetID"].ToString(), row["assetName"].ToString(), row["assetRoomID"].ToString(), row["assetDescription"].ToString());
                assetList.Add(assetToAdd);
            }


            //assetTreeView.ItemsSource = assetList;

        }

    }
}

最后是我的treeview XAML;

TreeView x:Name="assetTreeView"   ItemsSource="{Binding assetList}">
                                    <TreeView.ItemTemplate>
                                        <HierarchicalDataTemplate  DataType="{x:Type WPFFM:Asset}" ItemsSource="{Binding assetList}">

                                            <Grid Background="LightSkyBlue"  Margin="2" Width="100" Height="24">

                                                <TextBlock Margin="2" Text="{Binding name}" VerticalAlignment="Center" FontWeight="Bold" />
                                            </Grid>

                                        </HierarchicalDataTemplate>
                                    </TreeView.ItemTemplate>
                                </TreeView>

我尝试了很多方法来绑定,但我没有运气。从我收集的内容中,我将树视图绑定到Asset(我的类)列表,并将我的数据类型绑定到Asset的数据类型。然后我试图显示从我的Asset类公开的“name”属性。我不确定我哪里出错了。我错过了一些简单的东西吗?

编辑:忽略一些函数可能需要从mainwindow.xaml.cs移动的事实以及诸如此类的东西,我现在不打算用于结构。

1 个答案:

答案 0 :(得分:2)

WPF绑定的所有内容必须是属性,而不是字段。 这里缺少的另一件事是DataContext初始化。没有它,绑定将不起作用。