wpf里最常见的三种数据模板,绑定的方法简单介绍下,初学者可以了解下。
一、datagrid
先看下效果图
xaml部分:
<DataGrid Name="gd" >
<DataGrid.Columns>
<DataGridTextColumn Header="姓名" Binding="{Binding Name}" Width="100"></DataGridTextColumn>
<DataGridTextColumn Header="性别" Binding="{Binding Sex}" Width="100"></DataGridTextColumn>
<DataGridTextColumn Header="年龄" Binding="{Binding Age}" Width="100"></DataGridTextColumn>
<DataGridTextColumn Header="身高" Binding="{Binding Height}" Width="100"></DataGridTextColumn>
<DataGridTextColumn Header="体重" Binding="{Binding Weight}" Width="100"></DataGridTextColumn>
<DataGridTemplateColumn Header="操作" Width="300">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button Content="增加"></Button>
<Button Content="删除"></Button>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
cs部分:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApp3
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Load();
}
private void Load()
{
List<student> studentList = new List<student>();
for (int i = 0; i < 5; i++)
{
student st = new student();
st.Name = "张三";
st.Age = 22;
st.Sex = "男";
st.Weight = 60;
st.Height = 170;
st.Age += i;
studentList.Add(st);
}
gd.ItemsSource = studentList;
}
}
class student
{
string name;
public string Name { get => name; set => name = value; }
string sex;
public string Sex { get => sex; set => sex = value; }
int age;
public int Age { get => age; set => age = value; }
int height;
public int Height { get => height; set => height = value; }
int weitht;
public int Weight { get => weitht; set => weitht = value; }
}
}
二、listbox
先看效果图
xaml'部分:
<Window x:Class="WpfApp3.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:WpfApp3"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources >
<DataTemplate x:Key="dataTemplate1">
<StackPanel Orientation="Horizontal">
<TextBlock Text="年龄:"></TextBlock>
<TextBlock Text="{Binding Age}"></TextBlock>
</StackPanel>
</DataTemplate>
</Window.Resources>
<Grid>
<ListBox x:Name="lb" Width="300" Height="200" BorderBrush="Bisque" ItemTemplate="{StaticResource dataTemplate1}"></ListBox>
</Grid>
</Window>
cs部分:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApp3
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Load2();
}
private void Load2()
{
List<Ages> ageList = new List<Ages>();
for (int i = 0; i < 10; i++)
{
Ages age = new Ages();
age.Age += i;
ageList.Add(age);
}
lb.ItemsSource = ageList;
}
}
class Ages
{
int age;
public int Age { get => age; set => age = value; }
}
}
三、combbox
xaml部分:
<Window x:Class="WpfApp3.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:WpfApp3"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources >
<DataTemplate x:Key="dataTemplate1">
<StackPanel Orientation="Horizontal">
<TextBlock Text="年龄:"></TextBlock>
<TextBlock Text="{Binding Age}"></TextBlock>
</StackPanel>
</DataTemplate>
</Window.Resources>
<Grid>
<ComboBox x:Name="lb" ItemTemplate="{StaticResource dataTemplate1 }" Width=" 100" Height="30"></ComboBox>
</Grid>
</Window>
cs部分:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApp3
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Load2();
}
private void Load2()
{
List<Ages> ageList = new List<Ages>();
for (int i = 0; i < 10; i++)
{
Ages age = new Ages();
age.Age += i;
ageList.Add(age);
}
lb.ItemsSource = ageList;
}
}
class Ages
{
int age;
public int Age { get => age; set => age = value; }
}
}