Я создаю простое приложение для списков Todo, в котором я хочу иметь возможность иметь несколько списков, плавающих вокруг моего рабочего стола, чтобы я мог маркировать и управлять задачами.
Соответствующие элементы UIE в моем приложении:
Window1 (Окно)
TodoList (контроль пользователя)
TodoStackCard (контроль пользователя)
Window1 выглядит так:
<Window x:Class="TaskHole.App.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:t="clr-namespace:TaskHole.App.Controls"
xmlns:tcc="clr-namespace:TaskHole.CustomControls"
Title="Window1" Width="500" Height="500" Background="Transparent" WindowStyle="None" AllowsTransparency="True" >
<Canvas Name="maincanvas" Width="500" Height="500" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<ResizeGrip SizeChanged="ResizeGrip_SizeChanged" />
<t:TodoList Canvas.Top="0" Canvas.Left="0" MinWidth="30" Width="50" Height="500" x:Name="todoList" TaskHover="todoList_TaskHover" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Canvas>
</Window>
TodoList выглядит так:
<UserControl x:Class="TaskHole.App.Controls.TodoList"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:t="clr-namespace:TaskHole.App.Controls"
xmlns:tcc="clr-namespace:TaskHole.CustomControls"
Background="Transparent">
<StackPanel VerticalAlignment="Bottom" HorizontalAlignment="Stretch" MinWidth="1" Grid.Row="2" Height="Auto" AllowDrop="True">
<ItemsControl Name="todolist" ItemsSource="{Binding}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Name="stackPanel" VerticalAlignment="Bottom">
</VirtualizingStackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<t:TodoStackCard x:Name="card" TaskHover="card_TaskHover" Orientation="Vertical" VerticalContentAlignment="Top" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</UserControl>
У меня есть несколько экземпляров этих окон, и я хочу иметь возможность перетаскивать любой из элементов управления между окнами. Я попытался использовать элемент управления Thumb, и, хотя это работает, он позволяет только перетаскивать элемент управления вокруг содержащего холста.
Как мне подражать поведению, скажем, проводника Windows, где я могу перетаскивать файл за пределы приложения и в другое приложение, постоянно видя скрытое представление файла под курсором.
Могу ли я сделать это чисто в C # и WPF? Если так / если нет, то как?