我試圖從同一個listview控件中的另一個listview中發送的listview中刪除一個類型爲Order的對象。這些列表視圖的xaml是這樣的:如何從項目被拖動的控件中刪除丟棄的項目
<ListView x:Name="listView" HorizontalAlignment="Left" Height="448" ItemsSource="{Binding}" VerticalAlignment="Top" Width="664" Margin="121,43,-2,0">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" Height="100"></StackPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<Button x:Name="Up" Content="^" Click="Up_Click"/>
<Button x:Name="Down" Content="v" Click="Down_Click"/>
<TextBlock Text="{Binding Chauffeur.Naam}" Width="50"/>
<ListView x:Name="Swagnek" ItemsSource="{Binding Orders}" Height="50" AllowDrop="True" DragEnter="ListView_DragEnter" PreviewDragOver="ListView_PreviewDragOver" Drop="ListView_Drop">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock x:Name="HoiDoei" HorizontalAlignment="Stretch" Text="{Binding ID}" MouseRightButtonDown="HoiDoei_MouseRightButtonDown" MouseLeftButtonDown="HoiDoei_MouseLeftButtonDown" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
所以我試圖拖放兩個listviews之間的訂單。 問題是,當我放棄它時,我必須從列表視圖中刪除拖動並從中拖出的順序。
我正在使用此C#代碼。
private void ListView_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var tb = (TextBlock)sender;
DragDrop.DoDragDrop(this, (Order)tb.DataContext, DragDropEffects.Copy);
}
private void ListView_DragEnter(object sender, DragEventArgs e)
{
e.Effects = DragDropEffects.Move;
}
private void ListView_PreviewDragOver(object sender, DragEventArgs e)
{
e.Handled = true;
}
private void ListView_Drop(object sender, DragEventArgs e)
{
var lv = sender as ListView;
if (lv.ItemsSource == null)
lv.ItemsSource = new ObservableCollection<Order>();
var order = e.Data.GetData(typeof(Order)) as Order;
var items = lv.ItemsSource as ObservableCollection<Order>;
items.Add(order);
orderlist.Remove(order);
}
這也可以從一個列表框拖拽到列表視圖中的一個(不包括代碼)
這就是爲什麼
orderlist.Remove(order);
在有
你是最好的,謝謝你的小解釋,讓我覺得我學到了東西:) –