Bagi mereka yang tidak ingin membuat dialog khusus tetapi masih lebih suka cara WPF 100% dan tidak ingin menggunakan DDL terpisah, dependensi tambahan atau API usang, saya datang dengan hack yang sangat sederhana menggunakan dialog Save As.
Tidak perlu menggunakan arahan, Anda cukup menyalin-tempel kode di bawah ini!
Itu harus tetap sangat ramah pengguna dan kebanyakan orang tidak akan pernah menyadarinya.
Idenya berasal dari fakta bahwa kita dapat mengubah judul dialog itu, menyembunyikan file, dan mengerjakan sekitar nama file yang dihasilkan dengan cukup mudah.
Ini adalah peretasan besar, tapi mungkin itu akan melakukan pekerjaan dengan baik untuk penggunaan Anda ...
Dalam contoh ini saya memiliki objek kotak teks untuk berisi jalur yang dihasilkan, tetapi Anda dapat menghapus baris terkait dan menggunakan nilai balik jika Anda ingin ...
// Create a "Save As" dialog for selecting a directory (HACK)
var dialog = new Microsoft.Win32.SaveFileDialog();
dialog.InitialDirectory = textbox.Text; // Use current value for initial dir
dialog.Title = "Select a Directory"; // instead of default "Save As"
dialog.Filter = "Directory|*.this.directory"; // Prevents displaying files
dialog.FileName = "select"; // Filename will then be "select.this.directory"
if (dialog.ShowDialog() == true) {
string path = dialog.FileName;
// Remove fake filename from resulting path
path = path.Replace("\\select.this.directory", "");
path = path.Replace(".this.directory", "");
// If user has changed the filename, create the new directory
if (!System.IO.Directory.Exists(path)) {
System.IO.Directory.CreateDirectory(path);
}
// Our final value is in path
textbox.Text = path;
}
Satu-satunya masalah dengan peretasan ini adalah:
- Tombol Acknowledge masih mengatakan "Simpan" dan bukan sesuatu seperti "Pilih direktori", tetapi dalam kasus seperti tambang saya "Simpan" pemilihan direktori sehingga masih berfungsi ...
- Bidang input masih mengatakan "Nama file" dan bukan "Nama direktori", tetapi kita dapat mengatakan bahwa direktori adalah jenis file ...
- Masih ada dropdown "Simpan sebagai tipe", tetapi nilainya mengatakan "Direktori (*. Direktori ini)", dan pengguna tidak dapat mengubahnya untuk sesuatu yang lain, berfungsi untuk saya ...
Kebanyakan orang tidak akan memperhatikan ini, walaupun saya pasti akan lebih suka menggunakan cara WPF resmi jika microsoft akan mengeluarkan pikiran mereka, tetapi sampai mereka melakukannya, itu adalah perbaikan sementara saya.