silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight ItemsControl 实现webform中类似于repeater和DataList功能大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

ItemsControl结构,在2中有详细说明   <ItemsControl> <ItemsControl.Template> <ItemsPresenter></ItemsPresenter> </ItemsControl.Template> <ItemsControl.ItemsPanel> <ItemsPanelTemplate /> </ItemsControl.ItemsPanel>

ItemsControl结构,在2中有详细说明

 

<ItemsControl>
<ItemsControl.Template>
<ItemsPresenter></ItemsPresenter>
</ItemsControl.Template>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate />
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate />
</ItemsControl.ItemTemplate>
</ItemsControl>

Read more: http://discuss.itacumens.com/index.php?topic=55001.0#ixzz18GFzd8jl

其次是silverlight 4 outline document中的说明

 

 

表示一个可用于呈现项的集合的控件。

命名空间:  System.Windows.Controls
程序集:  System.Windows(在 System.Windows.dll 中)

示例

下面的示例创建一个具有多个 ListBox 控件的页面,这些控件继承自以多种方式配置的 ItemsControl

运行此示例

 

Silverlight ItemsControl 实现webform中类似于repeater和DataList功能复制

代码

<UserControl x:Class="ListBoxSnippetEx.Page"
    xmlns="http://scheR_798_11845@as.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://scheR_798_11845@as.microsoft.com/winfx/2006/xaml" 
    xmlns:src="clr-namespace:ListBoxSnippetEx"
     >

    <StackPanel x:Name="LayoutRoot" BACkground="White" Margin="10,10,10">
        <StackPanel Orientation="Horizontal" >
            <TextBlock Margin="5" Text="ListBox with unbound data:" />
        <ListBox Width="150" Margin="0,5,10">
            <TextBlock Text="TextBlock" />
            <TextBox Text="TextBox" />
            <Button Content="Button"  />
            <Rectangle Fill="LightBlue" Height="20" Width="100"  Margin="2,2,2"/>
            <Ellipse Fill="Coral" Height="20" Width="150"  Margin="2,2"/>
        </ListBox>

        <TextBlock Margin="5" Text="ListBox with bound data:" />
        <Grid>
            <Grid.resources>
                <src:Customers x:Key="customers"/>
            </Grid.resources>
            <ListBox Itemssource="{Staticresource customers}" Width="250" Margin="0,10" 
               DisplaymemberPath="LastName"/>
        </Grid>
</StackPanel>
        <StackPanel Orientation="Horizontal" >
            <TextBlock Margin="5" Text="ListBox with ItemTemplate:" Width="160" />
            <Grid>
                <Grid.resources>
                    <src:Customers x:Key="customers"/>
                </Grid.resources>

                <ListBox Itemssource="{Staticresource customers}" Width="350" Margin="0,10">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <TextBlock Padding="5,0"
                      Text="{Binding FirstNamE}" />
                                <TextBlock Text="{Binding LastNamE}" />
                                <TextBlock Text="," />
                                <TextBlock Text="{Binding Address}" />
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </Grid>
            <Grid>
                <Grid.resources>
                    <Style x:Key="horizontallistBoxStyle" TargetType="ListBox">
                        <Setter Property="ItemsPanel">
                            <Setter.Value>
                                <ItemsPanelTemplate>
                                    <StackPanel Orientation="Horizontal"
                            VerticalAlignment="Center"
                            HorizontalAlignment="Center"/>
                                </ItemsPanelTemplate>
                            </Setter.Value>
                        </Setter>
                        <Setter Property="ItemTemplate">
                            <Setter.Value>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal">
                                        <TextBlock Padding="5,0"
                          Text="{Binding FirstNamE}" />
                                        <TextBlock Text="{Binding LastNamE}" />
                                    </StackPanel>
                                </DataTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>

                    <src:Customers x:Key="items"/>
                </Grid.resources>
                <ListBox Height="25" Width="420" Itemssource="{Staticresource items}" Style="{Staticresource horizontallistBoxStylE}"/>
            </Grid>
        </StackPanel>
        <TextBlock Margin="5" Text="ListBox with SELEctionChanged event handler:" Width="270" HorizontalAlignment="Left" />
            <ListBox Width="150" Margin="0,5" SELEctionChanged="PrintText" HorizontalAlignment="Left">
                <ListBoxItem Content="Item 1" />
                <ListBoxItem Content="Item 2" />
                <ListBoxItem Content="Item 3" />
                <ListBoxItem Content="Item 4" />
                <ListBoxItem Content="Item 5" />
            </ListBox>
            <TextBlock Name="textBlock1" />
     </StackPanel>
</UserControl>

@H_450_97@
Visual Basic 

Silverlight ItemsControl 实现webform中类似于repeater和DataList功能复制

代码

Imports System
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Documents
Imports System.Windows.Ink
Imports System.Windows.Input
Imports System.Windows.Media
Imports System.Windows.Media.Animation
Imports System.Windows.Shapes
Imports System.Collections.ObjectModel

Partial Public Class Page
    Inherits UserControl
    Public Sub New()
        ' required to initialize variables 
        InitializeComponent()
    End Sub

    Private Sub PrintText(ByVal sender As Object,ByVal args As SELEctionChangedEventArgs)
        Dim lbi As ListBoxItem = TryCast(TryCast(sender,ListBox).SELEctedItem,ListBoxItem)
        textBlock1.Text = " You SELEcted " + lbi.Content.ToString() + "."
    End Sub

End Class


Public Class Customer
    Private _firstName As String
    Private _lastName As String
    Private _address As String

    Public Property FirstName() As String
        Get
            Return _firstName
        End Get

        Set(ByVal value As String)
            _firstName = value
        End Set
    End Property

    Public Property LastName() As String
        Get
            Return _lastName
        End Get

        Set(ByVal value As String)
            _lastName = value
        End Set
    End Property

    Public Property Address() As String
        Get
            Return _address
        End Get

        Set(ByVal value As String)
            _address = value
        End Set
    End Property

    Public Sub New(ByVal firstName As String,ByVal lastName As String,ByVal address As String)
        @H_984_124@me.FirstName = firstName
        @H_984_124@me.LastName = lastName
        @H_984_124@me.Address = address
    End Sub

End Class

Public Class Customers
    Inherits ObservableCollection(Of Customer)

    Public Sub New()
        Add(New Customer("Michael","Anderberg","12 North Third Street,Apartment 45"))
        Add(New Customer("Chris","Ashton","34 West Fifth Street,Apartment 67"))
        Add(New Customer("Cassie","Hicks","56 East Seventh Street,Apartment 89"))
        Add(New Customer("Guido","Pica","78 South Ninth Street,Apartment 10"))
    End Sub

End Class


@H_450_97@
C# 

Silverlight ItemsControl 实现webform中类似于repeater和DataList功能复制

代码

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Collections.ObjectModel;

namespace ListBoxSnippetEx
{
    public partial class Page : UserControl
    {
        public Page()
        {
            // required to initialize variables
            InitializeComponent();
        }

        void PrintText(object sender,SELEctionChangedEventArgs args)
        {
            ListBoxItem lbi = ((sender as ListBox).SELEctedItem as ListBoxItem);
            textBlock1.Text = "   You SELEcted " + lbi.Content.ToString() + ".";
        }

    }

    public class Customer
    {
        public String FirstName { get; set; }
        public String LastName { get; set; }
        public String Address { get; set; }

        public Customer(String firstName,String lastName,String address)
        {
            this.FirstName = firstName;
            this.LastName = lastName;
            this.Address = address;
        }

    }

    public class Customers : ObservableCollection<Customer>
    {
        public Customers()
        {
            Add(new Customer("Michael",Apartment 45"
@H_450_97@
)); Add(new Customer("Chris",Apartment 67")); Add(new Customer("Cassie",Apartment 89")); Add(new Customer("Guido",Apartment 10")); } } }

下面的示例创建 ItemsControl认情况下,ItemsControl 列出项,但是没有任何其他可视特性(如镶边)。该示例指定用于为 ItemsControl 设置边框的 ControlTemplate。它还指定了用于指定每个项的外观的 DataTemplate 和用于水平排列项的 ItemsPanelTemplate

 

Silverlight ItemsControl 实现webform中类似于repeater和DataList功能

复制代码
<Grid>
  <Grid.resources>
    <src:Tasks x:Key="myTodoList"/>
  </Grid.resources>  
  <ItemsControl Margin="10" Width="400" 
            Itemssource="{Binding source={Staticresource myTodoList}}">
    <!--Use the Template property to specify a ControlTemplate to define
    the appearance of an ItemsControl. The ItemsPresenter uses the specified
    ItemsPanelTemplate (defined below) to layout the items. If an
    ItemsPanelTemplate is not specified,the default is used. (For ItemsControl,the default is an ItemsPanelTemplate that specifies a StackPanel that
    arranges items vertically.)-->
    <ItemsControl.Template>
      <ControlTemplate TargetType="ItemsControl">
        <Border BorderBrush="Aqua" BorderThickness="1" CornerRadius="15">
          <ItemsPresenter/>
        </Border>
      </ControlTemplate>
    </ItemsControl.Template>
    <!--Use the ItemsPanel property to specify an ItemsPanelTemplate
    that defines the panel that is used to hold the generated items.
    In other words,use this property if you want to affect
    how the items are laid out.-->
    <ItemsControl.ItemsPanel>
      <ItemsPanelTemplate>
        <StackPanel Orientation="Horizontal"/>
      </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <!--Use the ItemTemplate to set a DataTemplate to define
    the appeatance of the data objects. This DataTemplate
    specifies that each data object appears with the Proriity
    and TaskName on top of a silver ellipse.-->
    <ItemsControl.ItemTemplate>
      <DataTemplate>
        <Grid Width="70" Margin="5">
          <Ellipse Fill="Silver"/>
          <StackPanel>
            <TextBlock Margin="3,3,0" FontSize="12" HorizontalAlignment="Center"
                   Text="{Binding Path=Priority}"/>
            <TextBlock Margin="3,7" FontSize="12" HorizontalAlignment="Center"
                   Text="{Binding Path=TaskNamE}"/>
          </StackPanel>
        </Grid>
      </DataTemplate>
    </ItemsControl.ItemTemplate>
  </ItemsControl>
</Grid>

@H_450_97@
C# 

Silverlight ItemsControl 实现webform中类似于repeater和DataList功能复制

代码

public class Task : INotifyPropertyChanged
{
    private String name;
    privatE int priority;


    public event PropertyChangedEventHandler PropertyChanged;

    public Task()
    {
    }

    public Task(String name,int priority)
    {
        this.name = name;
        this.priority = priority;
    }

    public override String ToString()
    {
        return name.ToString();
    }

    public String TaskName
    {
        get { return name; }
        set
        {
            name = value;
            OnPropertyChanged("TaskName");
        }
    }

    public int Priority
    {
        get { return priority; }
        set
        {
            priority = value;
            OnPropertyChanged("Priority");
        }
    }

    protected void OnPropertyChanged(String info)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this,new PropertyChangedEventArgs(info));
        }
    }
}

public class Tasks : ObservableCollection<Task>
{
    public Tasks()
        : base()
    {
        Add(new Task("Shopping",2));
        Add(new Task("Laundry",2));
        Add(new Task("Email",1));
        Add(new Task("Clean",3));
        Add(new Task("Dinner",1));
    }
}

@H_450_97@

前面的示例生成类似于下图的输出

自定义的 ItemsControl
@H_450_624@

大佬总结

以上是大佬教程为你收集整理的Silverlight ItemsControl 实现webform中类似于repeater和DataList功能全部内容,希望文章能够帮你解决Silverlight ItemsControl 实现webform中类似于repeater和DataList功能所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。