zoukankan      html  css  js  c++  java
  • wpf数据绑定

    前段:

    <Window x:Class="WpfApplication1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
            xmlns:local="clr-namespace:WpfApplication1"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
    
            <Grid.RowDefinitions>
    
                <RowDefinition Height="140"/>
    
                <RowDefinition Height="150"/>
    
                <RowDefinition Height="140"/>
    
                <RowDefinition Height="100*"/>
    
            </Grid.RowDefinitions>
    
    
    
            <StackPanel Grid.Row="0">
    
                <TextBlock Width="248" Height="24" Text="股票名称:"
    
            TextWrapping="Wrap"/>
    
                <ListBox x:Name="listStockName" Width="248" Height="56">
    
                    <ListBoxItem Content="全通教育"/>
    
                    <ListBoxItem Content="大智慧"/>
    
                    <ListBoxItem Content="宝钢股份"/>
    
                    <ListBoxItem Content="浦发银行"/>
    
                    <ListBoxItem Content="工商银行"/>
    
                    <ListBoxItem Content="中国建筑"/>
    
                    <ListBoxItem Content="中国南车"/>
    
                </ListBox>
    
                <TextBlock Width="248" Height="24" Text="你所选中的股票名称:" />
    
                <TextBlock Width="248" Height="24" Text="{Binding ElementName=listStockName, Path=SelectedItem.Content}">
    
    
    
                </TextBlock>
    
            </StackPanel>
    
            <StackPanel Grid.Row="1">
    
                <TextBlock Width="248" Height="24" Text="颜色:"
    
            TextWrapping="Wrap"/>
    
                <ListBox x:Name="listColor" Width="248" Height="56">
    
                    <ListBoxItem Content="Blue"/>
    
                    <ListBoxItem Content="Red"/>
    
                    <ListBoxItem Content="Green"/>
    
                    <ListBoxItem Content="Gray"/>
    
                    <ListBoxItem Content="Cyan"/>
    
                    <ListBoxItem Content="GreenYellow"/>
    
                    <ListBoxItem Content="Orange"/>
    
                </ListBox>
    
                <TextBlock Width="248" Height="24" Text="改变背景色:" />
    
                <TextBlock Width="248" Height="24" Text="{Binding ElementName=listColor, Path=SelectedItem.Content, Mode=OneWay}"
    
                           Background="{Binding ElementName=listColor, Path=SelectedItem.Content, Mode=OneWay}">
    
    
    
                </TextBlock>
    
                <TextBox Name="txtTwoWay" Text="{Binding ElementName=listColor,Path=SelectedItem.Content,Mode=TwoWay}"
    
                         Background="{Binding ElementName=listColor,Path=SelectedItem.Content,Mode=TwoWay}"></TextBox>
    
            </StackPanel>
    
    
            <StackPanel Grid.Row="2">
    
                <StackPanel.Resources>
    
                    <XmlDataProvider x:Key="MyColors"  Source="Colors.xml"  XPath="colors">
                        
    
    
                    </XmlDataProvider>
    
    
    
                </StackPanel.Resources>
    
                <TextBlock Width="248" Height="24" Text="XML数据绑定:"
    
            TextWrapping="Wrap"/>
    
                <ListBox x:Name="listXmlColor" Width="248" Height="56" IsSynchronizedWithCurrentItem="True"
    
                         ItemsSource="{Binding Source={StaticResource MyColors},XPath=color/@name}">
    
    
    
                </ListBox>
    
                <TextBlock Width="248" Height="24" Text="选中的颜色:" />
    
                <TextBlock Width="248" Height="24" Text="{Binding ElementName=listXmlColor,  Path=SelectedValue, Mode=OneWay}">
    
    
                </TextBlock>
    
            </StackPanel>
    
    
    
    
    
            <StackPanel Grid.Row="3">
    
                <StackPanel.Resources>
    
                    <ObjectDataProvider x:Key="students"  ObjectType="{x:Type local:StudentService}" MethodName="GetStudentList">
    
    
    
                    </ObjectDataProvider>
    
    
    
                    <DataTemplate x:Key="studentLayout" DataType="students">
    
                        <StackPanel Orientation="Horizontal">
    
                            <TextBlock Text="{Binding Path=Name}"
    
                                FontWeight="Bold" Foreground="Blue"/>
    
                            <TextBlock Text=", "></TextBlock>
    
                            <TextBlock Text="{Binding Path=Age}"></TextBlock>
    
                            <TextBlock Text=", "></TextBlock>
    
                            <TextBlock Text="{Binding Path=Birthday}"></TextBlock>
    
                            <TextBlock Text=", "></TextBlock>
    
                            <TextBlock Text="{Binding Path=Country}"></TextBlock>
    
    
    
                        </StackPanel>
    
                    </DataTemplate>
    
    
    
                    <CollectionViewSource x:Key="studentsView" Source="{Binding Source={StaticResource students}}">
    
                        <CollectionViewSource.SortDescriptions>
    
                            <scm:SortDescription PropertyName="Name" Direction="Ascending" />
    
                            <scm:SortDescription PropertyName="Age" Direction="Descending" />
    
                        </CollectionViewSource.SortDescriptions>
    
                    </CollectionViewSource>
    
                </StackPanel.Resources>
    
                <TextBlock Width="248" Height="24" Text="对象数据绑定:"
    
            TextWrapping="Wrap"/>
    
                <ListBox x:Name="listObjectBind" Width="450" Height="80" IsSynchronizedWithCurrentItem="True"
    
                         ItemsSource="{Binding Source={StaticResource students}}"
    
                         ItemTemplate="{DynamicResource studentLayout}">
    
    
    
                </ListBox>
    
                <TextBlock Width="248" Height="24" Text="数据排序:"
    
            TextWrapping="Wrap"/>
    
                <DataGrid DataContext="{StaticResource studentsView}" AutoGenerateColumns="False"   
    
                    ItemsSource="{Binding}" CanUserAddRows="False">
    
                    <DataGrid.Columns>
    
                        <DataGridTextColumn Binding="{Binding Name}" Header="名称" />
    
                        <DataGridTextColumn Binding="{Binding Age}" Header="年龄" />
    
                        <DataGridTextColumn Binding="{Binding Country}" Header="国家" />
    
                        <DataGridTextColumn Binding="{Binding Birthday}" Header="出生日期" />
    
                    </DataGrid.Columns>
    
                </DataGrid>
    
            </StackPanel>
            <Button Content="Button" HorizontalAlignment="Left" Margin="24,96,0,0" VerticalAlignment="Top" Width="75" RenderTransformOrigin="-0.179,-0.938" ContentStringFormat="http://dmsite.chinacloudsites.cn/root/index.html" Click="Button_Click"/>
    
    
        </Grid>
    
    
    </Window>

    后端

    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    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 WpfApplication1
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
    
            
        }
    
    
    
        public class StudentService
        {
    
            public List<Student> GetStudentList()
            {
    
                Student liang = new Student();
    
                liang.Age = "18";
    
                liang.Name = "梁丘";
    
                liang.Birthday = "1990-02-03";
    
                liang.Country = "中国";
    
                Student zuo = new Student();
    
                zuo.Age = "22";
    
                zuo.Name = "左丘";
    
                zuo.Birthday = "1992-02-03";
    
                zuo.Country = "中国";
    
                Student diwu = new Student();
    
                diwu.Age = "32";
    
                diwu.Name = "第五言";
    
                diwu.Birthday = "1982-11-03";
    
                diwu.Country = "中国";
    
                Student yang = new Student();
    
                yang.Age = "12";
    
                yang.Name = "羊舌微";
    
                yang.Birthday = "2002-11-13";
    
                yang.Country = "中国";
    
                List<Student> personList = new List<Student>();
    
                personList.Add(liang);
    
                personList.Add(zuo);
    
                personList.Add(diwu);
    
                personList.Add(yang);
    
                return personList;
    
            }
    
    
    
        }
    
        public class Student : DependencyObject
        {
    
            //声明一个静态只读的DependencyProperty字段
    
            public static readonly DependencyProperty NameProperty;
    
            public static readonly DependencyProperty AgeProperty;
    
            public static readonly DependencyProperty BirthdayProperty;
    
            public static readonly DependencyProperty CountryProperty;
    
            static Student()
            {
    
                //注册我们定义的依赖属性Name,Age,birthday,Country
    
                NameProperty = DependencyProperty.Register("Name", typeof(string), typeof(Student),
    
                    new PropertyMetadata("名称", OnValueChanged));
    
                AgeProperty = DependencyProperty.Register("Age", typeof(string), typeof(Student),
    
                    new PropertyMetadata("年龄", OnValueChanged));
    
                BirthdayProperty = DependencyProperty.Register("Birthday", typeof(string), typeof(Student),
    
                    new PropertyMetadata("出生日期", OnValueChanged));
    
                CountryProperty = DependencyProperty.Register("Country", typeof(string), typeof(Student),
    
                    new PropertyMetadata("国家", OnValueChanged));
    
            }
    
    
    
            private static void OnValueChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
            {
    
                //当值改变时,我们可以在此做一些逻辑处理
    
            }
    
    
    
            //属性包装器,通过它来读取和设置我们刚才注册的依赖属性
    
            public string Name
            {
    
                get { return (string)GetValue(NameProperty); }
    
                set { SetValue(NameProperty, value); }
    
            }
    
            public string Age
            {
    
                get { return (string)GetValue(AgeProperty); }
    
                set { SetValue(AgeProperty, value); }
    
            }
    
    
    
            public string Birthday
            {
    
                get { return (string)GetValue(BirthdayProperty); }
    
                set { SetValue(BirthdayProperty, value); }
    
            }
    
    
    
            public string Country
            {
    
                get { return (string)GetValue(CountryProperty); }
    
                set { SetValue(CountryProperty, value); }
    
            }
    
    
        }
    }
  • 相关阅读:
    异常处理、网络编程
    内置函数、反射、__str__、__del__、元类
    tomcat 拒绝服务
    html标签
    google 与服务器搭建
    liunx centox ssh 配置
    java 泛型
    Windows Mysql安装
    java 空对象
    java 动态代理(类型信息)
  • 原文地址:https://www.cnblogs.com/damsoft/p/6125796.html
Copyright © 2011-2022 走看看