我想知道我是否可以创建一个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。它可以绑定项目,并创建绑定对象的非滚动堆叠列表。将此控件与ScrollViewerStackPanel结合使用将获得所需的结果。



使用列表底部所需的按钮可滚动该菜单。即使列表中没有数据,它也将始终存在。

实现此目的的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/

10-12 04:40