0

私のプロジェクトには、アプリケーションで使用しているすべての画像がサブフォルダーに保存されている Images というフォルダーがあります。すべての画像は、ビルドプロセスで「リソース」に設定されています。

myproject
  |__Images
      |__AppImages
          |__StarOn.png
          |__StarOff.png

さて、次のように手動で画像を設定すると:

<Image Source="Images\AppImages\StarOn.png" width="32" height="32"/>

画像は画像ボックスに正しく表示されます。

次のようなコンバーターとバインディングを使用して画像を設定したいと思います。

<Image>
<Image.Source>
  <Binding Path="Number" converter="{StaticResource GetImagePathConverter}"/>
</Image.Source>
</Image>

ここで、数値は整数です

私のコンバーターは次のとおりです。

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        int questionNr=int.parse(value.ToString());

            if (questionNr>100)
            {
                return "Images\\AppImages\\StarOn.png";
            }

            return "Images\\AppImages\\starOff.png";
    }

しかし、これはイメージを変えていませんか?..

何が間違っているのですか?コンバーターから画像ソースを正しく設定するにはどうすればよいですか?

前もって感謝します

4

2 に答える 2

4

コンバーターの使用方法が正しくありません。コンバーターのインスタンスを作成する必要があります。これをバインディングで使用しますStaticResourcelocal:xamlで宣言する必要があるローカル名前空間です-

<Image>
  <Image.Resources>
    <local:GetImagePathConverter x:Key="GetImagePathConverter"/>
  </Image.Resources>
  <Image.Source>
    <Binding Path="Number" Converter="{StaticResource GetImagePathConverter}"/>
  </Image.Source>
</Image>

また、Sourceプロパティは文字列型ではありませんが、代わりにImageSourceコンバーターに何かが必要です-

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
   int questionNr=int.parse(value.ToString());

   if (questionNr>100)
   {
      return new BitmapImage(new Uri("Images\\AppImages\\StarOn.png", UriKind.Relative));
   }
   return new BitmapImage(new Uri("Images\\AppImages\\StarOff.png", UriKind.Relative));
}
于 2012-09-02T18:39:03.730 に答える
0

この回答を参照してください。

基本的に、コンバーターで返すオブジェクトの型に注意する必要があります。型stringのプロパティに戻ることはできませんImageSource

私は自分の開発マシンを使用していませんが、コードは次のようなものです。

return new BitmapImage(new Uri(the/path/to/image.png)).Source; //or '*.ImageSource', can't remember
于 2012-09-02T18:37:06.020 に答える