ListPicker中的数据模板和稳定项

时间:2014-05-15 22:39:07

标签: c# xaml windows-phone datatemplate listpicker

我想知道我是否可以创建一个ListPicker,它从数据模板中获取的项目和底部的一个稳定的项目组合在一起,并且始终存在。

这是我的代码:

<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>

我的意思是,对于上面的代码,我想在列表选择器中添加一个项目,该项目将以与所有项目相同的方式显示,但将被解决一次,无论如何都将保留在那里。例如,&#34;添加新教师..&#34;,即使没有其他项目也将被显示,将会被查看。

1 个答案:

答案 0 :(得分:0)

因此,问题是您无法将不同的对象类型绑定到itemSource,因此您无法使用ListPicker控件执行此操作。有一个被忽略的控件叫做ItemsControl。这可以包含绑定到它的项目,并创建绑定对象的非滚动堆叠列表。将此控件与ScrollViewerStackPanel结合使用可以获得所需的结果。

1

可以使用列表底部所需的按钮进行滚动。即使列表中没有数据,它也会一直存在。

实现这一目标的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以获得所需的项目。

如果您需要&#34;添加教师&#34;要成为其他控件,例如TextBlock,只需更改控件并让其触发添加教师操作。

希望这有帮助!

亚当