Перетаскивание работает в TextBlock Control, но не в Image Control - PullRequest
1 голос
/ 21 апреля 2019

Google наконец подвел меня.Я искал везде, о чем только мог думать, но безрезультатно.В моем проекте у меня есть элемент управления изображениями, на который я хотел бы поместить изображения и сохранить их путь к файлу в переменной, а изображение отобразить в элементе управления.

После нескольких попыток заставить его работать, я решил открыть новыйпроектировать и упростить все.Сейчас, похоже, все сводится к тому, что событие Drop не запускается на элементе управления изображением, пока оно срабатывает на элементе управления TextBlock.

Xaml:

<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:VB"
    mc:Ignorable="d"
    Title="MainWindow" Height="450" Width="800">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="1*"/>
        <RowDefinition Height="1*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
    </Grid.ColumnDefinitions>
    <TextBlock Grid.Column="1" AllowDrop="True" Drop="TextBlock_Drop"/>
    <Image AllowDrop="True" Drop="Image_Drop"/>
</Grid>

Код сзади:

Class MainWindow

    Private Sub TextBlock_Drop(sender As Object, e As DragEventArgs)

        MessageBox.Show("fired")

    End Sub

    Private Sub Image_Drop(sender As Object, e As DragEventArgs)

        MessageBox.Show("fired")

    End Sub

End Class

Не имеет значения тип файла.Каждый файл, брошенный в TextBlock, приводит к открытию MessageBox.Каждый файл, добавленный в Image Control, абсолютно ничего не делает.

Я понятия не имею, почему, и любые предложения будут оценены!

РЕДАКТИРОВАТЬ: Благодаря предложениям Булутая Сарача в его комментариях ниже, я обнаружил, чтодобавление файла образа в проект и ссылка на него в качестве источника для элемента управления Image устранила проблему, и теперь событие происходит правильно.Для тех, кто не хочет добавлять файл изображения по умолчанию, см. Ответ Bulutay Saraç ниже для простой и эффективной работы.

1 Ответ

0 голосов
/ 21 апреля 2019

Это способ решения этой проблемы. Поместите свой элемент управления изображением в контейнер (я использовал Grid), чтобы дать вашему контейнеру прозрачный фон и вызывайте ваши события в контейнере.

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="1*"/>
        <RowDefinition Height="1*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
    </Grid.ColumnDefinitions>
    <TextBlock Grid.Column="1" AllowDrop="True" Drop="TextBlock_Drop"/>
    <Grid AllowDrop="True" Drop="Image_Drop" Background="Transparent">
        <Image />
    </Grid>
</Grid>

VB

Class MainWindow
    Private Sub Image_Drop(sender As Object, e As DragEventArgs)
        MessageBox.Show("Image")
    End Sub

    Private Sub TextBlock_Drop(sender As Object, e As DragEventArgs)
        MessageBox.Show("Text Block")
    End Sub
End Class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...