听说WPF支持TreeView的数据绑定,不知哪位做过,能不能举个例子? 听说WPF支持TreeView的数据绑定,不知哪位做过,能不能举个例子? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Northwind数据库的三个表之间依次有一对多关系: Customers-Orders-Order Details 要想在TreeView上表现这种关系,就需要HierarchicalDataTemplate. <Grid> <Grid.Resources> <DataTemplate x:Key="detailTemplate"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="100" /> <ColumnDefinition Width="100" /> <ColumnDefinition Width="100" /> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0" Text="{Binding UnitPrice}" /> <TextBlock Grid.Column="1" Text="{Binding Quantity}" /> <TextBlock Grid.Column="2" Text="{Binding Discount}" /> </Grid> </DataTemplate> <HierarchicalDataTemplate x:Key="orderTemplate" ItemsSource="{Binding Orders2OrderDetails}" ItemTemplate ="{StaticResource detailTemplate}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="100"></ColumnDefinition> <ColumnDefinition Width="150"></ColumnDefinition> <ColumnDefinition Width="150"></ColumnDefinition> <ColumnDefinition Width="150"></ColumnDefinition> <ColumnDefinition Width="100"></ColumnDefinition> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0" Text="{Binding Path=OrderID}" /> <TextBlock Grid.Column="1" Text="{Binding Path=OrderDate}" /> <TextBlock Grid.Column="2" Text="{Binding Path=RequiredDate}" /> <TextBlock Grid.Column="3" Text="{Binding Path=ShippedDate}" /> <TextBlock Grid.Column="4" Text="{Binding Path=Freight}" /> </Grid> </HierarchicalDataTemplate> <HierarchicalDataTemplate x:Key="treeTemplate" ItemsSource="{Binding Customers2Orders}" ItemTemplate="{StaticResource orderTemplate}"> <TextBlock Text="{Binding CompanyName}" /> </HierarchicalDataTemplate> </Grid.Resources> <TreeView Grid.Column="0" Name="myTreeView" ItemsSource="{Binding}" ItemTemplate="{StaticResource treeTemplate}"> </TreeView> </Grid> //读取数据库的.cs代码:public partial class Window1 : System.Windows.Window { public DataSet ds; public Window1() { InitializeComponent(); ds = new DataSet(); SqlConnection conn = new SqlConnection(); conn.ConnectionString = "server=(local);database=northwind;uid=sa;pwd="; SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; // Load Customers SqlDataAdapter daCustomers = new SqlDataAdapter("select * from Customers",conn); daCustomers.Fill(ds, "Customers"); // Load Orders SqlDataAdapter daOrders = new SqlDataAdapter("select * from Orders", conn); daOrders.Fill(ds, "Orders"); // Load OrderDetails SqlDataAdapter daOrderDetails = new SqlDataAdapter("select * from [Order Details]", conn); daOrderDetails.Fill(ds, "OrderDetails"); ds.Relations.Add("Customers2Orders", ds.Tables["Customers"].Columns["CustomerID"], ds.Tables["Orders"].Columns["CustomerID"]); ds.Relations.Add("Orders2OrderDetails", ds.Tables["Orders"].Columns["OrderID"], ds.Tables["OrderDetails"].Columns["OrderID"]); myTreeView.DataContext = ds.Tables["Customers"]; } dataGridView数据绑定出现这个怎么解决 C#如何给string转换编码? C#跟数据连接异常~~谢谢!! 怎么在路径里加一个反斜线? 还有问题啊.. 有关GDI的显示与打印的问题。 如何模拟访问一个网站 C#访问oracle数据库 [非开发,咨询硬件]大家帮帮忙,看看NAS应该注意选择哪些东西 我在网上下了个程序。但调试的时候提示说:“无法在Web服务器上启动调试,因为没有起用集成Windows身份认证” C#中如何使用select into语句 模式化窗口关闭问题!
Customers-Orders-Order Details 要想在TreeView上表现这种关系,就需要HierarchicalDataTemplate. <Grid> <Grid.Resources> <DataTemplate x:Key="detailTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding UnitPrice}" />
<TextBlock Grid.Column="1" Text="{Binding Quantity}" />
<TextBlock Grid.Column="2" Text="{Binding Discount}" />
</Grid>
</DataTemplate> <HierarchicalDataTemplate x:Key="orderTemplate" ItemsSource="{Binding Orders2OrderDetails}" ItemTemplate ="{StaticResource detailTemplate}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"></ColumnDefinition>
<ColumnDefinition Width="150"></ColumnDefinition>
<ColumnDefinition Width="150"></ColumnDefinition>
<ColumnDefinition Width="150"></ColumnDefinition>
<ColumnDefinition Width="100"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Path=OrderID}" />
<TextBlock Grid.Column="1" Text="{Binding Path=OrderDate}" />
<TextBlock Grid.Column="2" Text="{Binding Path=RequiredDate}" />
<TextBlock Grid.Column="3" Text="{Binding Path=ShippedDate}" />
<TextBlock Grid.Column="4" Text="{Binding Path=Freight}" />
</Grid>
</HierarchicalDataTemplate> <HierarchicalDataTemplate x:Key="treeTemplate" ItemsSource="{Binding Customers2Orders}" ItemTemplate="{StaticResource orderTemplate}">
<TextBlock Text="{Binding CompanyName}" />
</HierarchicalDataTemplate>
</Grid.Resources> <TreeView Grid.Column="0" Name="myTreeView" ItemsSource="{Binding}" ItemTemplate="{StaticResource treeTemplate}">
</TreeView>
</Grid> //读取数据库的.cs代码:
public partial class Window1 : System.Windows.Window
{
public DataSet ds;
public Window1()
{
InitializeComponent(); ds = new DataSet(); SqlConnection conn = new SqlConnection();
conn.ConnectionString = "server=(local);database=northwind;uid=sa;pwd="; SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
// Load Customers
SqlDataAdapter daCustomers = new SqlDataAdapter("select * from Customers",conn);
daCustomers.Fill(ds, "Customers"); // Load Orders
SqlDataAdapter daOrders = new SqlDataAdapter("select * from Orders", conn);
daOrders.Fill(ds, "Orders");
// Load OrderDetails
SqlDataAdapter daOrderDetails = new SqlDataAdapter("select * from [Order Details]", conn);
daOrderDetails.Fill(ds, "OrderDetails"); ds.Relations.Add("Customers2Orders", ds.Tables["Customers"].Columns["CustomerID"], ds.Tables["Orders"].Columns["CustomerID"]);
ds.Relations.Add("Orders2OrderDetails", ds.Tables["Orders"].Columns["OrderID"], ds.Tables["OrderDetails"].Columns["OrderID"]); myTreeView.DataContext = ds.Tables["Customers"]; }