web-dev-qa-db-fra.com

Où est la boîte de dialogue de sélection de fichiers dans WPF?

http://i.minus.com/i3xuoWZkpfxHn.png

Je ne vois rien qui me permettrait de choisir des fichiers sur mon ordinateur ... il doit y en avoir un, où est-il? Il me manque probablement une référence?


Edit: Ce que j'avais à l'esprit était une zone de texte avec un bouton "Parcourir" à côté. Il me vient à l'esprit que je dois probablement placer la zone de texte et le bouton de navigation moi-même et ajouter un événement de clic au bouton pour ouvrir la boîte de dialogue ...

43
mpen

Il n'y a aucun contrôle intégré qui a une zone de texte avec un bouton [Parcourir] à côté. Vous devez régler cela vous-même.

Pour la boîte de dialogue "ouvrir le fichier" elle-même, il y a OpenFileDialog dans l'espace de noms Microsoft.Win32 .

53
Adam Lear

Pour une réponse plus complète, supposez que vous disposez d'un bouton BtnFileOpen et d'une zone de texte TxtFile. Vous devez d'abord référencer le System.Windows.Forms Assemblage à partir de la boîte de dialogue des références (assurez-vous de le cocher, double-cliquer dessus ne semble pas l'ajouter pour moi).

Dans l'événement de clic de bouton:

private void BtnFileOpen_Click(object sender, RoutedEventArgs e)
{
    var fileDialog = new System.Windows.Forms.OpenFileDialog();
    var result = fileDialog.ShowDialog();
    switch (result)
    {
        case System.Windows.Forms.DialogResult.OK:
            var file = fileDialog.FileName;
            TxtFile.Text = file;
            TxtFile.ToolTip = file;
            break;
        case System.Windows.Forms.DialogResult.Cancel:
        default:
            TxtFile.Text = null;
            TxtFile.ToolTip = null;
            break;
    }
}

Si vous avez désactivé votre zone de texte, vous pouvez modifier votre xaml pour l'inclure

ToolTipService.ShowOnDisabled="True"

24
Chris Marisic

J'utilise généralement le OpenFileDialog dans le System.Windows.Forms espace de noms. Je l'alias en utilisant SWF, puis ça devient

SWF.OpenFileDialog o = new SWF.OpenFileDialog();
5
joe