我想知道如何動態地使用字典資源在後面的C#代碼 - 即..我想在運行時從圖像資源詞典wpf圖像資源和運行時在wpf控制中更改圖像
我有一個程序,在WPF詞典中有3個圖像 - 這些圖像設置爲圖像資源。
然後在我的WPF窗口後面的代碼中,我想根據用戶啓動的事件加載三個圖像中的任何一個。
有沒有真正的代碼,我必須顯示,因爲我沒有做的工作。
想法?
我想知道如何動態地使用字典資源在後面的C#代碼 - 即..我想在運行時從圖像資源詞典wpf圖像資源和運行時在wpf控制中更改圖像
我有一個程序,在WPF詞典中有3個圖像 - 這些圖像設置爲圖像資源。
然後在我的WPF窗口後面的代碼中,我想根據用戶啓動的事件加載三個圖像中的任何一個。
有沒有真正的代碼,我必須顯示,因爲我沒有做的工作。
想法?
首先,確保你定義了你的形象資源,像這樣:
<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中定義的,則跳過此步驟)。在你的窗口的XAML文件,確保您有這樣的事情:現在
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="myDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
,在你的後臺代碼,你可以使用FindResource()方法來定位你的圖像資源通過它的鍵名(價值資源字典中ImageSource的x:Key屬性)如下:
imageControl.Source = (ImageSource)FindResource("image1");
希望這有助於!
這是一個除了the accepted answer: 當ViewModel
內MVVM工作,確保從出增加了資源目錄視圖中使用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.Resources - 非常感謝! – Tab 2009-06-03 15:27:34