将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>
posted @ 2024-07-08 15:12  孤沉  阅读(18)  评论(0编辑  收藏  举报