Eu preciso colocar um arquivo de imagem em meu aplicativo WPF. Atualmente, tenho um evento disparando quando coloco os arquivos, mas não sei o que fazer a seguir. Como faço para obter a imagem? O sender
objeto é a imagem ou o controle?
private void ImagePanel_Drop(object sender, DragEventArgs e)
{
//what next, dont know how to get the image object, can I get the file path here?
}
AllowDrop
é definido como True, mas oDrop
manipulador de eventos nunca é chamado. Quando arrasto um arquivo sobre a janela, vejo um símbolo circular "negado"Grid
como elemento raiz, com umBorder
interior com aBackground
propriedade definida como algo (branco é bom, mas não transparente). Dentro doBorder
coloquei o conteúdo real.O arquivo de imagem está contido no
e
parâmetro, que é uma instância daDragEventArgs
classe .(O
sender
parâmetro contém uma referência ao objeto que gerou o evento.)Especificamente, verifique o
e.Data
membro ; conforme a documentação explica, isso retorna uma referência ao objeto de dados (IDataObject
) que contém os dados do evento de arrastar.A
IDataObject
interface fornece vários métodos para recuperar o objeto de dados que você procura. Você provavelmente vai querer começar chamando oGetFormats
método para descobrir o formato dos dados com os quais está trabalhando. (Por exemplo, é uma imagem real ou simplesmente o caminho para um arquivo de imagem?)Então, depois de identificar o formato do arquivo que está sendo arrastado, você chamará uma das sobrecargas específicas do
GetData
método para realmente recuperar o objeto de dados em um formato específico.fonte
Além da resposta de AR, observe que se você quiser usar o
TextBox
drop, você deve saber as seguintes coisas.TextBox
parece já ter algum tratamento padrão paraDragAndDrop
. Se o seu objeto de dados for umString
, ele simplesmente funcionará. Outros tipos não são manipulados e você obtém o efeito de mouse Proibido e seu manipulador Drop nunca é chamado.Parece que você pode ativar seu próprio tratamento com
e.Handled
para true em umPreviewDragOver
manipulador de eventos.XAML
C #
fonte