1.两个控件之间的数据绑定
Text = "{Binding Path=Value,ElementName=slider1}"
2.控件和类之间的数据绑定
1.创建一个Person类,设置类的接口为INotifyPropertyChanged。
设置相关的命名空间和事件
设置绑定的属性的set。
2.在XMAL的TextBox中设置 Text绑定 类中相关的属性
3.在窗口类中 使用Person来定义对象。将对象赋值给TextBox的 DataContent
自定义的Person类的代码:
class Person:INotifyPropertyChanged
{
private int age;
public int Age
{
get { return age; }
set
{
age = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Age"));
}
}
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public event PropertyChangedEventHandler PropertyChanged;
}
在XMAL中的设置:
Text ="{Binding Age}"
在MainWIndow类中中设置:
public partial class MainWindow : Window
{
Person p = new Person();
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
p.Age = 10;
textBox2.DataContext = p;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
p.Age++;
}
private void button2_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(p.Age.ToString());
}
}
数据绑定的内容就完成了。
3.ListBox的应用.
Listbox常用的属性:SelectItem ,SelectValue。ItemSource ,DisplayMemberPath。
XAML:
<ListBox DisplayMemberPath ="Name" SelectedValue="Age" Name="lbPerson" Height="170" HorizontalAlignment="Left" Margin="48,86,0,0" VerticalAlignment="Top" Width="168" />
private void Window_Loaded(object sender, RoutedEventArgs e)
{
List<Person> listPerson = new List<Person>();
listPerson.Add(new Person() { Age = 15, Name = "Asuna" });
listPerson.Add(new Person() { Age = 16, Name = "Hina" });
listPerson.Add(new Person() { Age = 14, Name = "Misaka" });
lbPerson.ItemsSource = listPerson;
}
private void btnAge_Click(object sender, RoutedEventArgs e)
{
object selectItem = lbPerson.SelectedItem;
object selectAge = lbPerson.SelectedValue;
}
<ListBox Height="176" HorizontalAlignment="Left" Margin="64,54,0,0" Name="lbComic" VerticalAlignment="Top" Width="171" SelectionChanged="lbComic_SelectionChanged" />
CS:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
List<string> listComic = new List<string>();
listComic.Add("刀剑神域");
listComic.Add("某科学的超电磁炮");
listComic.Add("旋风管家");
lbComic.ItemsSource = listComic;
}
private void lbComic_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
List<string> listPlayer = new List<string>();
string strComic = (string)lbComic.SelectedItem;
if (strComic == "刀剑神域")
{
listPlayer.Add("亚丝娜");
listPlayer.Add("桐谷和人");
listPlayer.Add("桐谷直叶");
lbPlayer.ItemsSource = listPlayer;
}
else if (strComic == "某科学的超电磁炮")
{
listPlayer.Add("御坂美琴");
listPlayer.Add("白井黑子");
listPlayer.Add("婚后光子");
lbPlayer.ItemsSource = listPlayer;
}
else if (strComic == "旋风管家")
{
listPlayer.Add("三千院凪");
listPlayer.Add("桂雏菊");
listPlayer.Add("西泽步");
lbPlayer.ItemsSource = listPlayer;
}
}
4.DataGrid的常见用法。
DataGrid的使用方法跟ListBox很像。都是用来显示数据的常用控件。
1.DataGrid的常用属性:AutoGenerateColumns ,CanUserAddRows,IsReadOnly
2.代码:
XMAL:
<Window x:Class="GridData.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
<Grid>
<DataGrid AutoGenerateColumns ="False" CanUserAddRows ="False" Name="dgPerson" IsReadOnly ="False" Height="200" HorizontalAlignment="Left" Margin="44,41,0,0" VerticalAlignment="Top" Width="360" >
<DataGrid.Columns>
<DataGridTextColumn Header ="动漫" Binding ="{Binding Comic}"></DataGridTextColumn>
<DataGridTextColumn Header ="人物" Binding ="{Binding Name}"></DataGridTextColumn>
<DataGridTextColumn Header ="年龄" Binding ="{Binding Age}"></DataGridTextColumn>
<DataGridCheckBoxColumn Header ="性别" Binding ="{Binding Gender}"></DataGridCheckBoxColumn>
<DataGridComboBoxColumn Header ="班级" SelectedItemBinding ="{Binding ClassName}" x:Name ="className"></DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
CS:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
List<Player> lsPlayer = new List<Player>();
lsPlayer.Add(new Player { Comic = "刀剑神域", Name = "Asuna", Age = 14,Gender = false});
lsPlayer.Add(new Player { Comic = "某科学的超电磁炮", Name = "Misaka", Age = 14, Gender = false });
lsPlayer.Add(new Player { Comic = "旋风管家", Name = "Hina", Age = 16, Gender = false });
lsPlayer.Add(new Player { Comic = "海贼王", Name = "Lufei", Age = 17, Gender = true });
dgPerson.ItemsSource = lsPlayer;
dgPerson.
List<string> classNames = new List<string>();
classNames.Add("一班");
classNames.Add("二班");
classNames.Add("三班");
classNames.Add("四班");
className.ItemsSource = classNames;
string str = null;
}
}
自定义类Person:
namespace GridData
{
class Player
{
//所属作品 姓名 年龄 男女 班级
private string comic;
public string Comic
{
get { return comic; }
set { comic = value; }
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
private bool gender;
public bool Gender
{
get { return gender; }
set { gender = value; }
}
private string className;
public string ClassName
{
get { return className; }
set { className = value; }
}
}
}