web-dev-qa-db-ja.com

プログラムでC#の画像ソースをXAML静的リソースに設定する方法は?

私はこれを_Main.xaml_にResourceDictionary持っています:

_<Window.Resources>
    <ResourceDictionary>
        <BitmapImage x:Key="Customer" UriSource="Icons/customer.png"/>
        <BitmapImage x:Key="Project" UriSource="Icons/project.png"/>
        <BitmapImage x:Key="Task" UriSource="Icons/task.png"/>
    </ResourceDictionary>
</Window.Resources>
_

私は最初に画像を設定しました:

_<Image Name="TypeIcon" HorizontalAlignment="Left" VerticalAlignment="Center"
    Source="{StaticResource Customer}" Height="16" Width="16"/>
_

C#メソッドでTypeIconSourceCustomerからProjectに変更しようとしています。

私は使ってみました:

_TypeIcon.Source = "{StaticResource Project}";
_

しかし、私はこのエラーを受け取ります:

暗黙的に型stringを_System.Windows.Media.ImageSource_に変換できません

new ImageSource()を使用してイメージを定義しようとしましたが、これも機能しません。

C#でプログラムによってイメージのSourceを変更するにはどうすればよいですか?

8
Danny Beckett

多くのグーグル操作の後、この質問を書いている間に、私はそれを行う方法を理解しました:

TypeIcon.Source = (ImageSource) Resources["Project"];
14
Danny Beckett

静的リソース用ではありませんが、とにかく役に立つでしょう... :)

つまり、グリッドの背景を動的に設定する方法

var myBrush = new ImageBrush();
            var image = new Image
                            {
                                Source = new BitmapImage(
                                    new Uri(
                                        "pack://application:,,,/YourAppName;component/Images/Boo.png"))
                            };
myBrush.ImageSource = image.Source;
MainGrid.Background = myBrush;

つまり、アプリのアイコンを動的に設定する方法

var idleIco = new Image
            {
                Source = new BitmapImage(
                    new Uri(
                        "pack://application:,,,/YourAppName;component/Images/idle.ico"))
            };
SomeObjectYouAreUsingToSet.IconSource =idleIco.Source;
10
Developer

ImageSourceConverterクラスを使用して、必要なものを取得できます。次に例を示します。

img1.Source = (ImageSource)new ImageSourceConverter().ConvertFromString("/Assets/check.png");