我想知道我是否可以创建一个ListPicker,它与从Data Template中获取的Items和底部的一个稳定且始终存在的项组合在一起。
这是我的代码:
<toolkit:ListPicker
x:Name="subjectTeacherListPicker"
ItemsSource="{Binding AllTeachers}"
Grid.Column="1"
Grid.Row="5">
<toolkit:ListPicker.ItemTemplate>
<DataTemplate>
<TextBlock>
<Run Text="{Binding TeacherName}"/>
<Run Text="{Binding TeacherSurname}"/>
</TextBlock>
</DataTemplate>
</toolkit:ListPicker.ItemTemplate>
</toolkit:ListPicker>
我的意思是,在上面的代码中,我想将一个项目添加到列表选择器,该列表选择器将以与所有项目相同的方式显示,但是将被解决一次,并且无论如何都将停留在那里。例如,“添加新老师..”,即使没有其他项目也将被查看。
最佳答案
因此,问题是您无法将不同的对象类型绑定到itemSource,因此无法使用ListPicker
控件执行此操作。有很多控件被称为ItemsControl
。它可以绑定项目,并创建绑定对象的非滚动堆叠列表。将此控件与ScrollViewer
和StackPanel
结合使用将获得所需的结果。
使用列表底部所需的按钮可滚动该菜单。即使列表中没有数据,它也将始终存在。
实现此目的的XAML如下:
<ScrollViewer Margin="5">
<StackPanel Orientation="Vertical">
<ItemsControl ItemsSource="{Binding AllTeachers}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock>
<Run Text="{Binding TeacherName}"/>
<Run Text="{Binding TeacherSurname}"/>
</TextBlock>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Button Content="Add teacher"/>
</StackPanel>
</ScrollViewer>
用我提供的代码替换您的
ListPicker
将为您提供一个非常好的起点,以完成自定义ItemTemplate
以获得所需的外观。如果您需要“添加教师”作为其他控件,例如
TextBlock
,只需更改该控件并使其触发“添加教师”操作即可。希望这可以帮助!
亚当
关于c# - ListPicker中的数据模板和稳定项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23689863/