WPF TreeView绑定xaml的写法(转)

WPF TreeView绑定xaml的写法

2018年05月30日 10:16:27 dxm809 阅读数:441

方法一

<Window x:Class="TreeViewDemo.MainWindow"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" >
    <Grid>
        <TreeView Name="TreeCategories" Margin="5">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding Path=Products}">
                    <TextBlock Text="{Binding Path=CategoryName}"></TextBlock>
                    <HierarchicalDataTemplate.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=ModelName}"></TextBlock>
                        </DataTemplate>
                    </HierarchicalDataTemplate.ItemTemplate>
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>
    </Grid>

</Window>

方法二

<Window x:Class="TreeViewDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:DBAccess;assembly=DBAccess"
        Title="MainWindow" Height="350" Width="525" >
    <Window.Resources>
        <HierarchicalDataTemplate DataType="{x:Type local:Category}" ItemsSource="{Binding Path=Products}">
            <TextBlock Text="{Binding Path=CategoryName}"></TextBlock>
        </HierarchicalDataTemplate>
        
        <HierarchicalDataTemplate DataType="{x:Type local:Product}">
            <TextBlock Text="{Binding Path=ModelName}"></TextBlock>
        </HierarchicalDataTemplate>
    </Window.Resources>
    <Grid>
        <TreeView Name="TreeCategories" Margin="5">
            
        </TreeView>
    </Grid>
</Window>

using DBAccess;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace TreeViewDemo
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            TreeCategories.ItemsSource = StoreDB.GetCategoriedAndProducts();
        }
    }

}

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DBAccess
{
    public class StoreDB
    {
        public static string connStr = Properties.Settings.Default.Store;

public static ObservableCollection<Product> GetProducts()
        {
            ObservableCollection<Product> products = new ObservableCollection<Product>();
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                SqlCommand cmd = new SqlCommand("GetProducts", conn);
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    products.Add(new Product((int)reader["ProductID"],(int)reader["CategoryID"],reader["ModelNumber"].ToString(),
                        reader["ModelName"].ToString(),reader["ProductImage"].ToString(),(decimal)reader["UnitCost"],reader["Description"].ToString()));
                }

return products;
            }
        }

public static Product GetProductByID(int ProductID)
        {
            Product pro =null;
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                SqlCommand cmd = new SqlCommand("GetProductByID", conn);
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("@ProductID",ProductID));
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    pro = new Product((int)reader["ProductID"], (int)reader["CategoryID"], reader["ModelNumber"].ToString(),
                        reader["ModelName"].ToString(), reader["ProductImage"].ToString(), (decimal)reader["UnitCost"], reader["Description"].ToString());
                }

return pro;
            }
        }

public static bool UpdateProduct(Product pro)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                SqlCommand cmd = new SqlCommand("UpdateProductByID", conn);
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("@ProductID", pro.ProductID));
                cmd.Parameters.Add(new SqlParameter("@ModelName", pro.ModelName));
                cmd.Parameters.Add(new SqlParameter("@ModelNumber", pro.ModelNumber));
                cmd.Parameters.Add(new SqlParameter("@UnitCost", pro.UnitCost));
                cmd.Parameters.Add(new SqlParameter("@Description", pro.Description));

conn.Open();
                return cmd.ExecuteNonQuery() > 0;
                
            }
        }

public static DataTable GetProductsDataTable()
        {
            using(SqlConnection conn = new SqlConnection(connStr))
            {
                SqlCommand cmd = new SqlCommand("GetProducts", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                adapter.Fill(ds, "Products");
                return ds.Tables["Products"];
            }
        }

public static DataSet GetCategoriedAndProductsDataSet()
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                SqlCommand cmd = new SqlCommand("GetProducts", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                adapter.Fill(ds, "Products");

cmd.CommandText = "GetCategories";
                adapter.Fill(ds, "Categories");

DataRelation dr = new DataRelation("CategoryProduct", ds.Tables["Categories"].Columns["CategoryID"], ds.Tables["Produdcts"].Columns["CategoryID"]);
                ds.Relations.Add(dr);
                return ds;
            }
        }

public static ICollection<Category> GetCategoriedAndProducts()
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                SqlCommand cmd = new SqlCommand("GetProducts", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                adapter.Fill(ds, "Products");

cmd.CommandText = "GetCategories";
                adapter.Fill(ds, "Categories");

DataRelation dr = new DataRelation("CategoryProduct", ds.Tables["Categories"].Columns["CategoryID"], ds.Tables["Products"].Columns["CategoryID"]);
                ds.Relations.Add(dr);
                ObservableCollection<Category> categories = new ObservableCollection<Category>();
                foreach (DataRow categoryRow in ds.Tables["Categories"].Rows)
                {
                    ObservableCollection<Product> products = new ObservableCollection<Product>();
                    foreach (DataRow productRow in categoryRow.GetChildRows(dr))
                    {
                        products.Add(new Product((int)productRow["ProductID"],(int)productRow["CategoryID"],productRow["ModelNumber"].ToString(),productRow["ModelName"].ToString(),productRow["ProductImage"].ToString(),(decimal)productRow["UnitCost"],productRow["Description"].ToString()));
                        
                    }
                    categories.Add(new Category(categoryRow["CategoryName"].ToString(),products));
                }

return categories;
                
            }
        }
    }
}

原文地址:https://www.cnblogs.com/LiZhongZhongY/p/10896939.html

时间: 2024-10-16 11:26:22

WPF TreeView绑定xaml的写法(转)的相关文章

WPF TreeView绑定字典集合

1 <TreeView Name="Tree" HorizontalAlignment="Left" Height="269" Width="292" > 2 3 <TreeView.ItemTemplate> 4 <HierarchicalDataTemplate ItemsSource="{Binding Value}"> 5 <StackPanel> 6

WPF之TreeView绑定

新建解决方案: StudentBll.cs代码: 1 public class StudentBll 2 { 3 public List<TreeItem> infoList { get; set; } 4 public StudentBll() 5 { 6 infoList = new List<TreeItem>(); 7 infoList.Add(new TreeItem() { Self=new StudentInfo(0, "人员信息", "

WPF多路绑定

多路绑定实现对数据的计算,XAML: 引用资源所在位置 xmlns:cmlib="clr-namespace:CommonLib;assembly=CommonLib"> <UserControl.Resources> <cmlib:CustomMultiValueConvertor x:Key="MultiValueConverter"/> </UserControl.Resources> <TextBlock Fo

WPF 根据绑定值设置DataGrid行背景色

实现这个功能可以使用类型转换器 1建立一个类BGConverter.cs该类需要继承IValueConverter接口,并实现接口的Convert与ConvertBack方法.注意在Class上需要加上一句话, [ValueConversion(typeof(int),typeof(Brushes))] 前一个type是源类型,后一个是目标类型 [ValueConversion(typeof(int),typeof(Brushes))] class BGConverter:IValueConve

学习WPF——了解WPF中的XAML

XAML的简单说明 XAML是用于实例化.NET对象的标记语言,主要用于构建WPF的用户界面 XAML中的每一个元素都映射为.NET类的一个实例,例如<Button>映射为WPF的Button对象 XAML可以在一个元素中嵌套另一个元素,例如Grid元素可以嵌套Button元素 了解XAML VisualStudio创建一个窗口,默认情况下产生的代码如下: 这段代码中包含两个标记元素,一个是Window,一个是Grid Window是WPF顶级元素的一种,还有另外两种顶级元素Page和Appl

WPF dataGrid 绑定ComboBox

WPF dataGrid绑定ComboBox Wpf中dataGrid中的某列是comboBox解决这个问题费了不少时间,不废话了直接上代码 xaml 代码 <DataGridTemplateColumn Header="组名"> <DataGridTemplateColumn.CellTempLate> <DataTemplate> <ComboBox SelectedValue="{Binding Path=Name}"

WPF TreeView HierarchicalDataTemplate

原文 WPF TreeView HierarchicalDataTemplate   <StackPanel Margin="0,0,0,0"> <StackPanel.Resources> <HierarchicalDataTemplate x:Key="MonTemp" DataType = "{x:Type local:MonthViewModel}" ItemsSource = "{Binding

WPF元素绑定

原文:WPF元素绑定 数据绑定简介:数据绑定是一种关系,该关系告诉WPF从源对象提取一些信息,并用这些信息设置目标对象的属性.目标属性是依赖项属性.源对象可以是任何内容,从另一个WPF元素乃至ADO.NET数据对象(如DataTable)或自行创建出数据对象.绑定用的是Binding类的一个实例,用的名称空间是:System.Windows.Data: 1.绑定表达式. 数据绑定表达式使用的是XAML标记扩展(因此具有花括号),用到的是System.Windows.Data.Bingding类的

WPF中 PropertyPath XAML 语法

原文:WPF中 PropertyPath XAML 语法 PropertyPath 对象支持复杂的内联XAML语法用来设置各种各样的属性,这些属性把PropertyPath类型作为它们的值.这篇文章讨论PropertyPath用在绑定和动画中的语法. PropertyPath用在哪里 PropertyPath是一个公共对象可以用在WPF的几个特性中.虽然公共PropertyPath用来传递属性信息,但是在不同的特性中,PropertyPath的用法是不同的.因此,在不同的特性中讲解Propert