2011-07-03 16 views
1

IValueConverterの実装 - IconExtractorです。私はそれをこのように使用します。別のファイルからIValueConverterの実装を使用するには?

<Image Source="{Binding Converter={StaticResource iconExtractor}, 
         ConverterParameter=c:\\Windows\\System32\\shell32.dll|72}"/> 

しかし、それが機能するために、IconExtractorは例えば、XAMLのコードビハインドファイルに存在する必要があります:私のメインウィンドウがMainWindow.xamlなので、クラスIconExtractorMainWindow.xaml.csでなければなりません。他の場所に置くことはできないのですか?

答えて

3

IValueConverterクラスは、別のアセンブリを含め、任意の場所に配置できます。あなたの使用に基づいて、MainWindowクラスからどこかでアクセスできるリソースが必要です。簡単な方法は、あなたのウィンドウリソースにそれを持たせることです。そのリソースは、プロジェクト内のすべてのXAMLベースのクラスからアクセス可能であるため、

<MainWindow.Resources> 
    <my:IconExtractor x:Key="iconExtractor"/> 
</MainWindow.Resources> 

また、App.xaml内のリソースを使用することができます。プロジェクトの複数のウィンドウにIconExtractorを使用すると、重複して作業することがないため、App.xamlを使用すると魅力的です。

+1

「タイプ:my:IconExtractor」が見つかりませんでした。「私はそれを配置しました:... '、クラスは' public class IconExtractor:IValueConverter {...} 'です。メインウィンドウと同じ名前空間にあります。私は何が欠けていますか? 'my'名前空間は特定の名前で宣言されるべきですか? – Tar

+0

メインウィンドウのcsファイルにクラスコード( 'c#'コード)を置くとうまくいきます。どうして? – Tar

+0

それは今働いているようです...たぶんタイプミスがありました... – Tar

関連する問題