对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移动的事实以及诸如此类的东西,我现在不打算用于结构。
答案 0 :(得分:2)
WPF绑定的所有内容必须是属性,而不是字段。 这里缺少的另一件事是DataContext初始化。没有它,绑定将不起作用。