2011-01-07 6 views
1

UIオブジェクトとApplication.Current.Dispatcherへの参照がnullでない場合にDispatcherにアクセスする方法は?私は、非UIスレッド(私のWPFコントロールよりも別のスレッド)からこれを呼んでいる

public static FontFamily GetDefaultFontFamily() 
{ 
    FontFamily fontFamily = null; 

    Application.Current.Dispatcher.Invoke(
     new Action(
      delegate 
      { 
       fontFamily = new TextBlock().FontFamily; 
      })); 

    return fontFamily; 
} 

けどApplication.Currentは、私の場合はnull(WPFオブジェクトは、MFCアプリケーションでホストされている)...

です

唯一の解決策は、DispatcherObjectインスタンスをパラメータとして渡すことですが、これは他の場所で多くの変更を引き起こし、呼び出し元コードからきれいな解決策にはなりません。

アイデア?

+0

FontFamilyをどこかにバインドしていますか?あなたは何をしようとしているの詳細を記述することができますか? – Brady

+0

それはprimarely FontFamillyから情報を読み取るために使用されていますが、ポイント以外に...問題は、私のメソッドは、WPFのUIスレッドの外で呼び出すことができ、私の場合Application.Currentは常にnullですので、別の方法が必要です有効なディパーチャーを見つける... – smichaud

答えて

1

クラスを初めて使用するときにディスパッチャーへの有効な参照をストアする(これをシングルトンにした)という問題を回避しました。

ベストソリューションではありませんが、それほど悪くはありません。

関連する問題