2

複数の画像を使用する WPF アプリケーションがあります。ほとんどの画像は変更されないため、XAML コードで設定されます。私のBuild Actionすべてのイメージファイルは「リソース」Copy to Output Directory設定され、「コピーしない」に設定されています。それらは期待どおりに表示されます。設定方法の例を次に示します。

<ribbon:RibbonApplicationMenu SmallImageSource="/Voetbal;component/Images/Ball_16.png">
//or
<ribbon:RibbonButton LargeImageSource="/Voetbal;component/Images/Calendar_32.png" />
//or
<Image Source="/Voetbal;component/Images/remove.png" Width="16" Height="16" />

しかし、C# を介して設定する必要があるイメージもあります。UserControl には、次のマークアップを持つ特定の列を含む ListView があります。

<GridViewColumn Header="" Width="32">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <Image Source="{Binding Icon}" />
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

ListView の ItemsSource は、ListView に入力される項目のインスタンスを含む汎用リストです。これらのアイテムには、2 つの文字列フィールドと ImageSource (「Icon」という名前) があります。Icon-property を次のように設定します。

var icon = new BitmapImage(new Uri("/Images/Gold_16.png", UriKind.RelativeOrAbsolute));
myViewModel.Items[0].Icon = icon;

しかし問題は、ListView に画像が表示されないことです。次のコードも試しました。SO や他のフォーラムで同様の質問への回答からこれらの部分を使用しました。私が怠けていたとか、何も試していないというわけではありませんが、これを修正する方法がわかりません...

var icon = new BitmapImage(new Uri("/Voetbal;component/Images/Gold_16.png", UriKind.RelativeOrAbsolute));

//or
var icon = new BitmapImage();
icon.BeginInit();
icon.UriSource = new Uri("pack://application:,,,/Voetbal;component/Images/Gold_16.png");
icon.EndInit();

//or
var icon = new BitmapImage();
icon.BeginInit();
icon.UriSource = new Uri("pack://application:,,,/Images/Gold_16.png");
icon.EndInit();

PS: 2 つの文字列プロパティが ListView の他の列に正しく表示されるため、ViewModel のバインドが機能することはわかっています。

ImageSource を設定して ListView に正しくバインドする方法を知っている人はいますか?

前もって感謝します!

4

1 に答える 1

0
myViewModel.Items[0].Icon = "Images/Gold_16.png";

上記のコードを試してください。Icon プロパティを文字列にする

于 2012-10-09T12:25:30.130 に答える