版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Vblegend_2013/article/details/82012009
wpf
<Window x:Class="WpfApp1.MainWindow"
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"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<ScrollViewer VerticalScrollBarVisibility="Visible" Margin="0,0,688,356" >
<ItemsControl ItemsSource="{Binding Friends}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" >
<TextBlock Text="{Binding Name}"></TextBlock>
<TextBlock Text="{Binding Gender}"></TextBlock>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Grid>
</Window>
后台
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows;
namespace WpfApp1
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window, INotifyPropertyChanged
{
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
Friends = new ObservableCollection<Person>();
Friends.Add(new Person() { Name = "小明", Gender = "男" });
Friends.Add(new Person() { Name = "小红", Gender = "女" });
Friends.Add(new Person() { Name = "小航", Gender = "男" });
Friends.Add(new Person() { Name = "小黑", Gender = "男" });
Friends.Add(new Person() { Name = "小A", Gender = "女" });
Friends.Add(new Person() { Name = "小甲", Gender = "男" });
Friends.Add(new Person() { Name = "小鸡", Gender = "女" });
}
public ObservableCollection<Person> Friends
{
get
{
return _friends;
}
set
{
_friends = value;
RaisePropertyChanged("Friends");
}
}
private ObservableCollection<Person> _friends { get; set; }
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
#region Methods
private void RaisePropertyChanged(string propertyName)
{
// take a copy to prevent thread issues
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
}
public class Person : INotifyPropertyChanged
{
public String Gender
{
get
{
return _gender;
}
set
{
_gender = value;
RaisePropertyChanged("Gender");
}
}
private String _gender { get; set; }
public String Name
{
get
{
return _name;
}
set
{
_name = value;
RaisePropertyChanged("Name");
}
}
private String _name { get; set; }
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
#region Methods
private void RaisePropertyChanged(string propertyName)
{
// take a copy to prevent thread issues
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
}
}