У меня есть несколько связанных элементов управления, которые все играют роль цели отбрасывания, мне нужно иметь возможность перетаскивать элементы между этими элементами управления.
проблема в том, что элементы управления не распознаются какотбрасывать цели с помощью каркаса перетаскивания
Панель ItemsControl:
<ItemsPanelTemplate x:Key="TopPipePanelTemplate">
<StackPanel></StackPanel>
</ItemsPanelTemplate>
Шаблон данных:
<DataTemplate x:Key="PipeDataItem" >
<Ellipse Width="45" Height="45" Fill="{Binding IsMine,Converter={StaticResource MyCheckerOwnerToColorConverter}}"></Ellipse>
</DataTemplate>
Стиль ItemsControl:
<Style TargetType="{x:Type ItemsControl}" x:Key="ItemsControlStyle">
<Setter Property="ItemTemplate" Value="{StaticResource PipeDataItem}"></Setter>
<Setter Property="AllowDrop" Value="True"></Setter>
<EventSetter Event="Drop" Handler="ItemsControlDropTarget"></EventSetter>
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="ItemsControl_MouseLeftButtonDown"></EventSetter>
</Style>
** для этого примера давайте возьмем 2 элемента управления ItemsControl: **
<ItemsControl ItemsSource="{Binding Path=Pipes[23].Checkers}" Style="{StaticResource ItemsControlStyle}"/>
<ItemsControl Grid.Column="1" ItemsSource="{Binding Path=Pipes[22].Checkers}" Style="{StaticResource ItemsControlStyle}"/>
при регулярном отображении:
пустой (левый) не распознается как цель отбрасывания, хотя AllowDrop установлен в True и обрабатывает событие Drop (как и все элементы управления на этом экране, посмотрите на стиль ItemsControlвыше)
теперь, когда я окрашиваю панель управления элементами, она внезапно распознается:
<ItemsPanelTemplate x:Key="TopPipePanelTemplate">
<StackPanel Background="AliceBlue"></StackPanel>
</ItemsPanelTemplate>
, как будто теперь она занимает всю ячейку, которую оназанимает .. я пытался установить панель для VerticalAlignment = "Stretch", но это также никак не повлияло
Я пытаюсь понять, почему мои элементы управления не распознаются как разрешенные для отбрасывания, даже если я ожидаю, что они занимают это пространство, в дополнение к элементу управления с помощьюэллипсы распознаются только до высоты эллипсов, которые занимают его содержимое.
какие-либо идеи?
, просто чтобы прояснить, что я имею в виду Признано, что цель отбрасывания - когда вы перетаскиваете эллипсбросить его поверх элемента управления.
на данный момент iv'e просто установите фон прозрачным