Я использую буксирные списки для перетаскивания, где пользователь может перетаскивать элементы из исходного списка и перетаскивать на цель. Я использую DataTemplate для ListBoxItems моих элементов управления ListBox.
Мне нужно дать пользователю возможность перемещать элементы вверх / вниз в целевом списке после их перемещения из источника. У меня есть две кнопки «Вверх» и «Вниз», но когда пользователь нажимает на одну из кнопок, он возвращает мне нулевой объект как selectedItem.
вот мой код
private void moveUp_Click(object sender, RoutedEventArgs e)
{
ListBoxItem selectedItem = lstmenuItems.SelectedItem as ListBoxItem;
if (selectedItem != null)
{
int index = lstmenuItems.Items.IndexOf(selectedItem);
if (index != 0)
{
lstmenuItems.Items.RemoveAt(index);
index -= 1;
lstmenuItems.Items.Insert(index, selectedItem);
lstmenuItems.SelectedIndex = index;
}
}
}
Я уверен, что это связано с ItemTemplate. вот xaml для списка
<ListBox x:Name="lstmenuItems" Height="300" MinWidth="200" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Code}"/>
<TextBlock Text="{Binding RetailPrice, StringFormat=£\{0:n\}}" />
</StackPanel>
<!-- Product Title-->
<TextBlock Text="{Binding Description1}" Width="100" Margin="2" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
Есть идеи, как получить доступ к выбранному элементу и как его переместить вверх / вниз?
Заранее спасибо