将WPF内部绑定的控件和数据拉取出来
一般最简单的ItemsControl的写法是
<ItemsControl ItemsSource="{Binding Students}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
后台写
public class ListDemoViewModel:BindableBase
{
private ObservableCollection<Student> _students;
public ObservableCollection<Student> Students
{
get => _students;
set => SetProperty(ref _students, value);
}
public ListDemoViewModel()
{
Students = new ObservableCollection<Student>() { new Student() { Name = "123" } };
}
但是以后数据模板和控件模板都会变得很复杂,如果我们把绑定同时写在一个xaml,那么这个xaml会显得异常臃肿。
1、先说数据的绑定,我们把上面的Name提取出去,放在一个新建的UserControl
可以写
<TextBlock Text="{Binding Students[0].Name}">
<TextBlock.DataContext>
<viewModel:ListDemoViewModel/>
</TextBlock.DataContext>
</TextBlock>
主界面改为
<ItemsControl ItemsSource="{Binding Students}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:GroupBoxView/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>