Ответ, который вы ищете, это ReorderListBox элемент управления, разработанный Джейсоном Гиншеро.
Я собираюсь показать его быструю реализацию, но если вам нужна полная демонстрация, загрузите исходный код с CodePlex здесь .
Сначала установите элемент управления из Nuget:
- Инструменты >>> Диспетчер пакетов библиотеки >>> Управление пакетами NuGet для решения ...
- Найдите ReorderListBox и установите созданный Джейсоном Джиншеро
Затем в XAML стартовой страницы вашего приложения (т. Е. MainPage.xaml ) скопируйте и вставьте выделенную ссылку на сборку в тег phone: PhoneApplicationPage вверху, где другие ссылки на сборку находятся.
xmlns:rlb="clr-namespace:ReorderListBox;assembly=ReorderListBox"
Затем поместите это на страницу XAML
<rlb:ReorderListBox
x:Name="reorderListBox"
Grid.Row="2"
Margin="12,0,12,12"
IsReorderEnabled="True">
<rlb:ReorderListBox.ItemTemplate>
<DataTemplate>
<TextBlock
Margin="12,4,12,4"
FontSize="36"
Text="{Binding}" />
</DataTemplate>
</rlb:ReorderListBox.ItemTemplate>
</rlb:ReorderListBox>
Наконец, в вашем коде (т. Е. MainPage.xaml.cs ) вы хотите определить ObservableCollection
со своим списком данных и присвоить его reorderListBox.ItemsSource
. Вы также можете сохранить состояние списка после его восстановления в следующий раз, когда приложение открывается. Вот пример:
public partial class MainPage : PhoneApplicationPage
{
public ObservableCollection<string> SampleDataList { get; set; }
// Constructor
public MainPage()
{
InitializeComponent();
if (IsolatedStorageSettings.ApplicationSettings.Contains("SampleDataList"))
{
SampleDataList = IsolatedStorageSettings.ApplicationSettings["SampleDataList"] as ObservableCollection<string>;
}
else
{
SampleDataList = new ObservableCollection<string>();
SampleDataList.Add("Zero");
SampleDataList.Add("One");
SampleDataList.Add("Two");
SampleDataList.Add("Three");
SampleDataList.Add("Four");
SampleDataList.Add("Five");
SampleDataList.Add("Six");
SampleDataList.Add("Seven");
SampleDataList.Add("Eight");
SampleDataList.Add("Nine");
SampleDataList.Add("Ten");
SampleDataList.Add("Eleven");
SampleDataList.Add("Twelve");
SampleDataList.Add("Thirteen");
SampleDataList.Add("Fourteen");
}
reorderListBox.ItemsSource = SampleDataList;
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
IsolatedStorageSettings.ApplicationSettings["SampleDataList"] = SampleDataList;
IsolatedStorageSettings.ApplicationSettings.Save();
}
}