最近、DataBindingの実験を開始し、カスタムクラスにDependencyPropertiesを実装しました。それはすべてうまく機能し、可能性はエキサイティングですが、クラス全体の設計をわずかに変更することによってのみ解決できる可能性がある問題に遭遇しました。そして、これが唯一の選択肢であり、何も見逃していないことを確認したいと思います。
したがって、私のクラスには、ユーザーがアプリケーションにインポートしたビデオファイルに関する情報が格納されます。他のプロパティの中で、それは含まれています:
public class VideoFile {
public string FilePath { get; protected set; }
public uint ID { get; protected set; ]
public string Extension { get { return Path.GetExtension(FilePath); } }
public string FileName { get { return Path.GetFilename(FilePath); } }
}
そのため、FilePathをDependencyPropertyに正常に置き換えました。ただし、UIでは、ほとんどの場合、ファイル名のみを表示したいと考えています。ファイル名は、値を提供するためにいくつかのロジックを使用しています。私の知る限り、ここに私の選択肢があります:
- FileNameとExtensionのDependencyPropertiesを作成し、コンストラクターでそれらの値を設定するだけで済みますが、それは冗長です。私はすでにFilePathにその情報を持っているので、このオプションを避けたいと思います。
- 1つはファイル名を表示するための1つ、もう1つは拡張子を表示するためのValueConvertersを作成し、それらをバインディングで使用します。
ValueConvertersに簡単に会っただけなので、よくわかりません。この目的で使用できますか?または、それらが存在する主な理由の1つに遭遇したことがありますか?:)
そして最後になりましたが、ValueConverterが正しい方法ではない場合、誰もがこれに似た状況を考えることができますか?私はそれらに直接飛び込むのを避けたいのですが、「その1つ」のプロパティはこのように表現できないため、機能しないことに気付くだけです。