• Silverlight: TextBox ComboBox数据绑定


    说明:
    本例子中的TextBox和ComboBox绑定的是一个数据集合, ObservableCollectioin来自命名空间System.Collections.ObjectModel。
    VB:Public MyBooks As New ObservableCollection(Of Book)()
    C#: Public ObservableCollection <Book> MyBooks=New ObservableCollection<Book>();
    待绑定的数据<TextBox x:Name="txtbox1" Text="{Binding Mode=OneWay}"/>

    MainPage.xaml:

    <UserControl x:Class="singleitem.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
      <Grid x:Name="LayoutRoot" Loaded="LayoutRoot_Loaded" ShowGridLines="True">
            <Grid.RowDefinitions >
                <RowDefinition Height="40"></RowDefinition>
                <RowDefinition Height="140"></RowDefinition>
                <RowDefinition Height="40"></RowDefinition>
                <RowDefinition Height="40"></RowDefinition>
                <RowDefinition Height="140"></RowDefinition>
                <RowDefinition ></RowDefinition>
            </Grid.RowDefinitions>
            <!--textbox1 Binding a control to a single Item-->
            <TextBox x:Name="textbox1" Grid.Row="1" Text="{Binding Mode=OneWay}"></TextBox>
            <!--combobox1 Binding a control to a collection of Objects-->
            <ComboBox x:Name="combobox1" Grid.Row="2" Height="40" Width="300" ItemsSource="{Binding Mode=OneWay}" HorizontalAlignment="left"></ComboBox>
            <!--combobox2 display items in a control by using a Data Template-->
            <ComboBox x:Name="combobox2" Grid.Row="3" Height="40" Width="300" ItemsSource="{Binding Mode=OneWay}" HorizontalAlignment="left">
                <ComboBox.ItemTemplate >
                    <DataTemplate >
                        <StackPanel Orientation="Horizontal" Margin="2">
                            <TextBlock Text="Author:" Margin="2"/>
                            <TextBlock Text="{Binding AuthorName}" Margin="2"/>
                            <TextBlock Text="Book:" Margin="10,2,0,2"/>
                            <TextBlock Text="{Binding BookName}" Margin="2"/>
                        </StackPanel>
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>
            <!--combobox3 adding a details view for selected item in combobox-->
            <ComboBox x:Name="combobox3" Grid.Row="4" Height="40" Width="300" ItemsSource="{Binding Mode=OneWay}" HorizontalAlignment="left" SelectionChanged="combobox3_SelectionChanged" VerticalAlignment="Top">
                <ComboBox.ItemTemplate >
                    <DataTemplate >
                        <StackPanel Orientation="Horizontal" Margin="2" >
                            <TextBlock Text="Author:" Margin="2" />
                            <TextBlock Text="{Binding AuthorName}" Margin="2"/>
                            <TextBlock Text="Book:" Margin="10,2,0,2"/>
                            <TextBlock Text="{Binding BookName}" Margin="2"/>
                        </StackPanel>
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>
            <StackPanel Grid.Row="4" x:Name="DetailPanel" VerticalAlignment="Bottom">
                <!--AuthorName is the property Name in the Book Class-->
                <!--BookName is the property Name in the Book Class-->
                <!--ReleaseTime is the property Name in the Book Class-->
                <TextBlock Text="{Binding AuthorName, Mode=OneWay}"/>
                <TextBlock Text="{Binding BookName, Mode=OneWay}"/>
                <TextBlock Text="{Binding ReleaseTime, Mode=OneWay}"/>
            </StackPanel>
        </Grid>
    </UserControl>

    MainPage.xaml.vb:

    Imports System.Collections.ObjectModel

    Partial Public Class MainPage
        Inherits UserControl
        'ObservableCollection defined in System.Collection.ObjectModel
        Public MyBooks As New ObservableCollection(Of Book)()
        Public Sub New()
            InitializeComponent()
        End Sub

        Private Sub LayoutRoot_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
            textbox1.DataContext = New Book("Cooper", "Simple Life", System.DateTime.Now)
            MyBooks.Add(New Book("Cooper", "Cooper Notes", New DateTime(2007, 2, 17)))
            MyBooks.Add(New Book("Cooper", "Graduation", New DateTime(2008, 2, 17)))
            MyBooks.Add(New Book("Sweety", "Sweety's Diary", New DateTime(2009, 2, 17)))

            combobox1.DataContext = MyBooks

            combobox2.DataContext = MyBooks

            combobox3.DataContext = MyBooks


        End Sub

        Private Sub combobox3_SelectionChanged(ByVal sender As System.Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs)
            Dim mys As ComboBox = TryCast(sender, ComboBox)
            DetailPanel.DataContext = MyBooks(mys.SelectedIndex)
        End Sub
    End Class
    ''' <summary>
    ''' Book Class as Object
    ''' </summary>
    ''' <remarks></remarks>
    Public Class Book

        Public Sub New()
        End Sub

        Public Sub New(ByVal author As String, ByVal book As String, ByVal release As DateTime)
            AuthorName = author
            BookName = book
            ReleaseTime = release
        End Sub

        Private _authorName As String
        Public Property AuthorName() As String
            Get
                Return _authorName
            End Get
            Set(ByVal value As String)
                _authorName = value
            End Set
        End Property


        Private _bookName As String
        Public Property BookName() As String
            Get
                Return _bookName
            End Get
            Set(ByVal value As String)
                _bookName = value
            End Set
        End Property


        Private _releaseTime As DateTime
        Public Property ReleaseTime() As DateTime
            Get
                Return _releaseTime
            End Get
            Set(ByVal value As DateTime)
                _releaseTime = value
            End Set
        End Property


        Public Overrides Function ToString() As String
            Return BookName + " by " + AuthorName + ", Published: " + ReleaseTime.ToShortDateString()
        End Function
    End Class

  • 相关阅读:
    架构师考试回顾
    精通 WPF UI Virtualization
    疑难杂症之Web客户端无法登录
    CDTray, 打开,关闭光驱的系统托盘程序
    原来Queryable是这样实现的..
    jQuery.Excel, 使用Ctrl+方向键/Home/End在input表格中移动
    nGoodPersonCards++
    C#数据库数据导入导出系列之三 数据库导出到Excel下
    调用webservice时提示对操作的回复消息正文进行反序列化时出错&&Web service 超过了最大请求长度
    ASP.NET网络映射驱动器无权限访问的解决方案(转)
  • 原文地址:https://www.cnblogs.com/qixue/p/1600837.html
Copyright © 2020-2023  润新知