「Avalonia UI - ダイアログ」の版間の差分

325行目: 325行目:
<br>
<br>


==== Filtersプロパティ (ファイルの種類) の設定 ====
==== FileTypeFilter (ファイルの種類) の設定 ====
ダイアログで開くことができるファイルの種類は、<code>Filters</code>プロパティにフィルタ文字列を設定する。<br>
ダイアログで開くことができるファイルの種類は、<code>FilePickerOpenOptions</code>クラスの<code>FileTypeFilter</code>プロパティにフィルタ文字列を設定する。<br>
<br>
<br>
フィルタ文字列の設定を以下に示す。<br>
フィルタ文字列の設定を以下に示す。<br>
* FileDialogFilterクラスの使用
* FilePickerOpenOptionsクラス (オプションクラス) の使用
*: 各フィルタはFileDialogFilterオブジェクトとして定義される。
*: FilePickerOpenOptionsクラスのインスタンスを作成し、そのFileTypeFilterプロパティにフィルタを設定する。
* Nameプロパティ
*: <br>
*: ユーザに表示されるフィルタの名前。
* FilePickerFileTypeクラスの使用
* Extensionsプロパティ
*: 各フィルタはFilePickerFileTypeオブジェクトとして定義されます。コンストラクタの引数にフィルタの名前を指定する。
*: 拡張子のリストであり、ワイルドカード (*) を含めずに指定する。
*: <br>
* Patterns
*: Patternsプロパティに、フィルタに含める拡張子のパターンを指定する。
*: <br>
* 複数の拡張子
* 複数の拡張子
*: 1つのフィルタに複数の拡張子を含めることができる。
*: 1つのフィルタに複数の拡張子を含めることができる。
*: 例えば、"HTMLファイル"フィルタでは、"*.html" と "*.htm" の両方を指定する。
*: <br>
* 全てのファイル
* 全てのファイル
*: 全てのファイルを表す場合は、拡張子として <code>"*"</code> を使用する。
*: 全てのファイルを表す場合は、拡張子として "*" を使用する。
*: 例えば、"すべてのファイル"フィルタがこれに該当する。
*: <br>
* フィルタの順序
* フィルタの順序
*: リストに追加した順序でユーザに表示される。
*: リストに追加した順序でユーザに表示される。
*: 以下の例では、"すべてのファイル"が最初に表示されて、以降"テキストファイル"、"XMLファイル"等の順で表示される。
<br>
この設定により、ユーザは様々なファイルタイプから選択できる。<br>
特定のファイル形式に絞り込む場合や全てのファイルを表示することもできる。<br>
<br>
<br>
<br>
  <syntaxhighlight lang="c#">
  <syntaxhighlight lang="c#">
  using Avalonia.Controls;
  var storageProvider = TopLevel.GetTopLevel(this)?.StorageProvider;
using System.Collections.Generic;
   
   
  public class FileDialogExample
  var options = new FilePickerOpenOptions
  {
  {
     public void ShowFileDialog()
     FileTypeFilter = new[]
     {
     {
       var dialog = new OpenFileDialog();
       new FilePickerFileType("すべてのファイル") { Patterns = new[] { "*" } },
      new FilePickerFileType("テキストファイル") { Patterns = new[] { "*.txt" } },
      // Filtersプロパティの設定方法 1
      new FilePickerFileType("XMLファイル")    { Patterns = new[] { "*.xml" } },
      // List<FileDialogFilter>の使用
      new FilePickerFileType("HTMLファイル")    { Patterns = new[] { "*.html", "*.htm" } },
      dialog.Filters = new List<FileDialogFilter>
      new FilePickerFileType("Webファイル")    { Patterns = new[] { "*.html", "*.htm", "*.css", "*.js" } },
      {
      new FilePickerFileType("XMLファイルとHTMLファイル") { Patterns = new[] { "*.xml", "*.html", "*.htm" } },
          new FileDialogFilter { Name = "すべてのファイル", Extensions = new List<string> { "*" } },
      new FilePickerFileType("イメージファイル") { Patterns = new[] { "*.png", "*.jpg", "*.gif", "*.bmp", "*.webp" } }
          new FileDialogFilter { Name = "テキストファイル", Extensions = new List<string> { "txt" } },
    }
          new FileDialogFilter { Name = "テキストファイルとすべてのファイル", Extensions = new List<string> { "txt", "*" } },
};
          new FileDialogFilter { Name = "XMLファイル", Extensions = new List<string> { "xml" } },
          new FileDialogFilter { Name = "HTMLファイル", Extensions = new List<string> { "html", "htm" } },
          new FileDialogFilter { Name = "XMLファイルとHTMLファイルとすべてのファイル", Extensions = new List<string> { "xml", "html", "htm", "*" } },
          new FileDialogFilter { Name = "イメージファイル", Extensions = new List<string> { "png", "jpg", "gif", "bmp" } }
      };
   
   
      // Filtersプロパティの設定方法 2
  var file = await storageProvider.OpenFilePickerAsync(options);
      // FiltersのAddメソッドの使用
      dialog.Filters.Add(new FileDialogFilter { Name = "すべてのファイル", Extensions = { "*" } });
      dialog.Filters.Add(new FileDialogFilter { Name = "テキストファイル", Extensions = { "txt" } });
      dialog.Filters.Add(new FileDialogFilter { Name = "テキストファイルとすべてのファイル", Extensions = new List<string> { "txt", "*" } });
      dialog.Filters.Add(new FileDialogFilter { Name = "XMLファイル", Extensions = { "xml" } });
      dialog.Filters.Add(new FileDialogFilter { Name = "HTMLファイル", Extensions = new List<string> { "html", "htm" } });
      dialog.Filters.Add(new FileDialogFilter { Name = "XMLファイルとHTMLファイルとすべてのファイル", Extensions = new List<string> { "xml", "html", "htm", "*" } });
      dialog.Filters.Add(new FileDialogFilter { Name = "イメージファイル", Extensions = new List<string> { "png", "jpg", "gif", "bmp" } });
   
      // ファイル選択ダイアログを表示
      var result = await dialog.ShowAsync(this);
      if (result != null)
      {
          foreach (var path in result)
          {
            System.Console.WriteLine($"Selected file: {path}");
          }
      }
    }
}
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== 使用例 ====
==== 使用例 ====
以下の例では、FilePickerOpenOptionsクラスを使用してstorageProviderクラスを設定した後、ディレクトリ選択ダイアログを開いている。<br>
以下の例では、FilePickerOpenOptionsクラスを使用してstorageProviderクラスを設定した後、ディレクトリ選択ダイアログを開いている。<br>