C#コードの背後にある辞書リソースを動的に使用する方法を正確に知りたいと思います。実行時にイメージを辞書wpfイメージリソースとwpfコントロールのイメージを実行時に変更する
私はWPF辞書に3つの画像を持つプログラムを持っています。画像は画像リソースとして設定されています。
次に、私のWPFウィンドウのコードの後ろに、ユーザーが開始したイベントに基づいて3つのイメージのいずれかをロードします。
実際のコードはありませんが、私が行ったことは何も示していません。
アイデア?
C#コードの背後にある辞書リソースを動的に使用する方法を正確に知りたいと思います。実行時にイメージを辞書wpfイメージリソースとwpfコントロールのイメージを実行時に変更する
私はWPF辞書に3つの画像を持つプログラムを持っています。画像は画像リソースとして設定されています。
次に、私のWPFウィンドウのコードの後ろに、ユーザーが開始したイベントに基づいて3つのイメージのいずれかをロードします。
実際のコードはありませんが、私が行ったことは何も示していません。
アイデア?
まず、あなたはこのようなあなたの画像リソースを定義したことを確認してください:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ImageSource x:Key="image1">images/image1.jpg</ImageSource>
<ImageSource x:Key="image2">images/image2.jpg</ImageSource>
</ResourceDictionary>
第二に、私はあなたのWPFの辞書は、独自のファイルであることを仮定しています。これで、辞書がメインウィンドウのXAMLにマージされていることを確認する必要があります(リソース辞書がウィンドウのXAMLの内部で定義されている場合は、この手順を省略してください)。 、あなたはそれがキー名(の値だことで、あなたの画像リソースを検索するにfindResource()メソッドを使用することができますコードビハインドあなたに、
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="myDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
:今、あなたのウィンドウのXAMLファイルでは、あなたがこのような何かを持っていることを確認してください次のように:
imageControl.Source = (ImageSource)FindResource("image1");
これはうまくいきますように、リソース辞書内のImageSourceのx:Key属性。
これはthe accepted answerに追加された: MVVMからViewModel
内で作業する場合、リソースディレクトリが追加されたビューからFindResource
を使用してください。
<Window x:Class="My.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ViewModels="clr-namespace:My.ViewModels"
Title="USA Hockey Player Evaluation tool"
Icon="/USAHockeyPlayerEval;component/View/Images/HET.ico"
SizeToContent="WidthAndHeight"
MinHeight="500px" MinWidth="800px">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Images.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Window.DataContext>
<ViewModels:MainWindowMV/>
</Window.DataContext>
<StackPanel>
<Menu>
<MenuItem Header="File">
<MenuItem Header="Save"></MenuItem>
この場合、私の見解では、ウィンドウ(私が正しいMVVMを知らない;-))
Image img = new Image();
img.Source = (ImageSource)WindowReference.FindResource("Pluse");
ここWindowReference
がMy.MainWindow
への参照であるです。
ああ、私が見逃していたのは、私の辞書のWindowへの統合でした。 – Tab
すばらしい回答です。 +1してありがとう!ブラウジングMSDNは、そのようなシナリオの痛みです – Gishu
名誉 - 短い甘いと非常に正確 –