zoukankan      html  css  js  c++  java
  • Silverlight数据绑定简单例子

    新建一个类:Book

    using System.Collections.Generic;
    using System.ComponentModel;
    namespace GlobalStyles
    {
        public class Book : INotifyPropertyChanged
        {
            private string bookTitle;
            private string bookAuthor;
            private int quantityOnHand;
            private bool isPublished;
            private List<string> myChapters;


            // implement the required event for the interface
            public event PropertyChangedEventHandler PropertyChanged;


            public string Title
            {
                get { return bookTitle; }
                set
                {
                    bookTitle = value;
                    NotifyPropertyChanged("Title");
                }       // end set
            }           // end property

            public string Author
            {
                get { return bookAuthor; }
                set
                {
                    bookAuthor = value;
                    NotifyPropertyChanged("Author");
                }       // end set

            }

            public List<string> Chapters
            {
                get { return myChapters; }
                set
                {
                    myChapters = value;
                    NotifyPropertyChanged("Chapters");
                }
            }


            public bool IsPublished
            {
                get { return isPublished; }
                set
                {
                    isPublished = value;
                    NotifyPropertyChanged("IsPublished");
                }       // end set
            }

            public int QuantityOnHand
            {
                get { return quantityOnHand; }
                set
                {
                    quantityOnHand = value;
                    NotifyPropertyChanged("QuantityOnHand");
                }       // end set
            }

            // factoring out the call to the event
            public void NotifyPropertyChanged(string propertyName)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this,
                        new PropertyChangedEventArgs(propertyName));
                }

            }
        }               // end class
    }

    设计页面:

    <UserControl x:Class="GlobalStyles.Page"
        xmlns="http://schemas.microsoft.com/client/2007"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Width="400" Height="300">
            <Grid x:Name="LayoutRoot" Background="White" ShowGridLines="False">
                <Grid.RowDefinitions>
                    <RowDefinition Height="20" />
                    <RowDefinition MaxHeight="30" />
                    <RowDefinition MaxHeight="30" />
                    <RowDefinition MaxHeight="70" />
                    <RowDefinition MaxHeight="30" />
                    <RowDefinition MaxHeight="30" />
                    <RowDefinition MaxHeight="40" />
                    <RowDefinition MaxHeight="50" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="10"/>
                    <ColumnDefinition Width="170"/>
                    <ColumnDefinition Width="200" />
                </Grid.ColumnDefinitions>


                <TextBlock x:Name="TitlePrompt" Text="Title: "
                 Style="{StaticResource TextBlockPrompt}"
                 Grid.Row="1" Grid.Column="1" />
                
            <TextBlock x:Name="Title"
                Text="{Binding Title, Mode=OneWay }"
                Style="{StaticResource TextBlockValue}"
               
                Grid.Row="1"  Grid.Column="2"   />
           
            <TextBlock x:Name="AuthorPrompt" Text="Author: "
                Style="{StaticResource TextBlockPrompt}"
                Grid.Row="2" Grid.Column="1"  />
               
            <TextBlock x:Name="Author" Text="{Binding Author, Mode=OneWay }"
                Style="{StaticResource TextBlockValue}"
                Grid.Row="2"  Grid.Column="2"   />

            <TextBlock x:Name="ChapterPrompt" Text="Chapters" 
                Style="{StaticResource TextBlockPrompt}"
                Grid.Row="3" Grid.Column="1"  />
               
            <ListBox x:Name="Chapters"
                ItemsSource="{Binding  Chapters, Mode=OneWay}"
               
                Style="{StaticResource ListBoxStyle}"
                Grid.Row="3" Grid.Column="2" />
              

            <TextBlock x:Name="PublishedPrompt"
                Text="Published?: "  
                Style="{StaticResource TextBlockPrompt}"
                Grid.Row="4" Grid.Column="1"  />
               
               
            <CheckBox x:Name="Literature"
                Content="Publshsed"
                IsChecked = "{Binding IsPublished, Mode=TwoWay}"
                Style="{StaticResource CheckBoxStyle}"
                FontFamily="Comic Sans MS"
                Grid.Row="4" Grid.Column="2"/>           
          
            <TextBlock x:Name="QOHPrompt"
            Text="Quantity On Hand: "
            Style="{StaticResource TextBlockPrompt}"
            Foreground="Red"
            FontWeight="Bold"
            Grid.Row="5" Grid.Column="1"  />
               
            <TextBox x:Name="QuantityOnHand"  
                Text="{Binding QuantityOnHand, Mode=TwoWay}"
                Style="{StaticResource TextBoxStyle}" 
                Grid.Row="5" Grid.Column="2" />


            <Button x:Name="Change" Content="Change Book" 
             Style="{StaticResource Button}"
            Grid.Row="6" Grid.Column="1" Grid.ColumnSpan="2"  />
        </Grid>

       
    </UserControl>

    关键的页面代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;

    namespace GlobalStyles
    {
        public partial class Page : UserControl
        {
            private Book b1;     // now a class member
            private Book b2;
            private Book currentBook;
            public Page()
            {
                InitializeComponent();
                Loaded += new RoutedEventHandler(Page_Loaded);
            }

            void Page_Loaded(object sender,
                RoutedEventArgs e)
            {
                // event handler for change button
                Change.Click +=
                    new RoutedEventHandler(Change_Click);

                // initial book values           
                b1 = new Book();
                InitializeBleak(b1);
                currentBook = b2 = new Book();
                InitializeProgramming(b2);
                SetDataSource();
            }

            private void InitializeProgramming(Book b)
            {
                b.Title = "Programming Silverlight";
                b.Author = "Jesse Liberty";
                b.IsPublished = false;
                b.QuantityOnHand = 20;
                b.Chapters = new List<string>() { "Introduction", "Controls", "Events", "Styles" };
            }

            private void InitializeBleak(Book b)
            {
                b.Title = "Bleak House";
                b.Author = "Charles Dickens";
                b.IsPublished = false;
                b.QuantityOnHand = 150;
                b.Chapters = new List<string>() { "In Chancery", "In Fashion", "A Progress", "Telescoopic Philanthropy",
                   "A Morning Adventure", "Quite at Home", "The Ghosts Walk", "Covering Sins", "Signs and Tokens", "The Law Writer"};
            }


            void Change_Click(object sender, RoutedEventArgs e)
            {
                if (currentBook == b1)
                    currentBook = b2;
                else
                    currentBook = b1;
                SetDataSource();
            }

            void SetDataSource()
            {
                LayoutRoot.DataContext = currentBook;
                //Title.DataContext = currentBook;
                //Author.DataContext = currentBook;
                //Chapters.DataContext = currentBook;
                //MultipleAuthor.DataContext = currentBook;
                //QuantityOnHand.DataContext = currentBook;
            }
        }
    }

    关于作者: 王昕(QQ:475660) 在广州工作生活30余年。十多年开发经验,在Java、即时通讯、NoSQL、BPM、大数据等领域较有经验。
    目前维护的开源产品:https://gitee.com/475660
  • 相关阅读:
    [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.5.1
    [再寄小读者之数学篇](2014-11-21 关于积和式的一个不等式)
    简单的Slony-I设置实例
    Slony-I的限制
    PPAS上运行pg_dump经过II
    PPAS上运行pg_dump经过
    PL/pgSQL学习笔记之十一
    PL/pgSQL学习笔记之十
    PL/pgSQL学习笔记之九
    PL/pgSQL学习笔记之八
  • 原文地址:https://www.cnblogs.com/starcrm/p/1347807.html
Copyright © 2011-2022 走看看