1.Xaml代码
<Window x:Class="Test.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:Test"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<ListView x:Name="list" ItemsSource="{Binding List}">
<ListView.Resources>
<DataTemplate DataType="{x:Type local:TA}">
<StackPanel Orientation="Horizontal">
<Label Width="50" Height="25" Content="{Binding MyPropertyA}"/>
<Label Width="50" Height="25" Content="{Binding My2PropertyA}"/>
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type local:TB}">
<StackPanel Orientation="Horizontal">
<TextBox Width="50" Height="25" Text="{Binding MyPropertyB}"/>
<TextBox Width="50" Height="25" Text="{Binding My2PropertyB}"/>
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type local:TC}">
<StackPanel Orientation="Horizontal">
<Button Width="50" Height="25" Content="{Binding MyPropertyC}"/>
<Button Width="50" Height="25" Content="{Binding My2PropertyC}"/>
</StackPanel>
</DataTemplate>
</ListView.Resources>
</ListView>
</Grid>
</Window>
2.ViwModel
public class ViewModel
{
public List<object> List { get; set; }
public ViewModel()
{
List = new List<object>();
for (int i = 0; i < 3; i++)
{
List.Add(new TA() { My2PropertyA = i, MyPropertyA = i });
List.Add(new TB() { My2PropertyB = i, MyPropertyB = i });
List.Add(new TC() { My2PropertyC = i, MyPropertyC = i });
}
}
}
3.数据绑定
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new ViewModel(); ;
}
}
运行结果: