Есть контрол:
<UserControl /*namespaces*/
DataContext="{Binding RelativeSource={RelativeSource Self}}"
AllowDrop="True">
<Grid>
<Image Source="{Binding Path=ImageUrl}" AllowDrop="True"></Image>
</Grid>
</UserControl>
Главное окно, которое использует этот контрол:
<Window /*namespaces*/>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<ItemsControl Grid.Column="0" Name="ItemsControl">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.15*"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<local:MyCustomControl Grid.Column="0" Grid.Row="1" Drop="MyCustomControl_Drop"></local:MyCustomControl>
</Grid>
</Grid>
</Window>
При старте приложения заполняется первая колонка топ-грида, то есть в первой колонке заполняется UniformGrid так:
ItemsControl.Items.Add(new MyCustomControl() { /* properties_initialization*/});
Во второй колонке топ-грида, создается ещё один внутренний грид (<Grid Grid.Column="1">
)
Как видно из разметки во внутреннем гриде находится один мой контрол (в этот контрол нужно разрешить Drop
):
<local:MyCustomControl Grid.Column="0" Grid.Row="1" Drop="MyCustomControl_Drop"></local:MyCustomControl>
Задача: из первой колонки топ-грида, взять item из UniformGrid и Drop
-нуть во вторую колонку, во внутренний грид, в мой контрол <local:MyCustomControl...
Что получается сейчас: как видно из разметки контрола везде прописан атрибут AllowDrop="True"
- который должен разрешать Drop
. Но если перемещать элемент внутри UniformGrid то в нем везде Drop разрешен. А в момент когда <local:MyCustomControl>
(из второй колонки) ещё не заполнен, Drop
почему-то запрещен и можно дропнуть только на границу контрола..
Если дропать непосредственно на часть где изображение, то дроп тоже разрешен, но на момент старта там пусто, по этому приходится дропать только на границу..
Пробовал ко всем гридам дописывать AllowDrop="True"
и описывать контрол так: <local:MyCustomControl AllowDrop="True"
- без успешно.
Вопрос: почему так?
Судя по всему, у вас контрол не содержит установленного фона. Контрол без фона является «прозрачным» для событий от мыши, и таким образом не получает сообщения drag-and-drop.
Для того, чтобы контролу доставлялись мышиные события, ему нужен непустой Background
. Для вашего случая — Background="Transparent"
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пытаюсь получить все json файлы из папки StreamAssets на Android использую такой код
ВопросКак можно реализовать визуализацию гексагональной сетки на WPF, при том что каждая клеточка этой сетки является отдельным объектом,...