0

リソースが見つからない場合、関数 TryFindResource は null を返します。TryFindResource が見つけられないキーにフォールバック値を提供する方法はありますか?

大きなプロジェクトがあり、TryFindResource をラッパーに置き換えるのは簡単ではありません。最初のアプローチは、独自の ResourceDictionary を実装して MergedDictionaries に追加することでしたが、残念ながら ResourceDictionary はインターフェイスではなくクラスであり、そのメソッドをオーバーライドすることはできません。

したがって、TryFindResource が不明なリソースで null を返さないようにする適切な方法を探しています。

4

2 に答える 2

1

最も侵襲的でない方法は、おそらくコードベースを一掃し、以下の拡張方法を使用することです。FindResourceを呼び出す場所はどこでも、それをFindResourceExに変更します

public static class FrameworkElementExtensions
{
  public static Object TryFindResourceEx(this FrameworkElement el, Object resourceKey)
  {
    var result = el.FindResource(resourceKey);

    if(result == null)
    {
      // fallback handling here
    }

    return result;
  }
}
于 2013-10-25T13:09:49.720 に答える