在运行时替换资源

时间:2017-01-06 18:16:41

标签: c# wpf resources

我使用here中的键盘控件。

资源在xaml中定义:

   <Grid.Resources>
            <ResourceDictionary x:Name="resdictionary">
                <!-- Img sources-->
                <ImageSource x:Key="EngRus">/TermControls;component/Images/Eng-Rus.png</ImageSource>
                <ImageSource x:Key="gEngRus">/TermControls;component/Images/gEng-Rus.png</ImageSource>
 ...

如何用运行时加载的图像替换它们?我玩findresources没有成功。

1 个答案:

答案 0 :(得分:1)

您可以通过密钥访问ResourceDictionary中的资源:

public OnScreenKeyboard()
{
    this.InitializeComponent();
    System.Windows.Media.ImageSource EngRus = MainGrid.Resources["EngRus"] as System.Windows.Media.ImageSource;
}

...然后将其替换为具有相同密钥的其他资源:

public OnScreenKeyboard()
{
    this.InitializeComponent();
    //remove the old resource
    MainGrid.Resources.Remove("EngRus");

    //create a new BitmapImage
    System.Windows.Media.Imaging.BitmapImage image = new System.Windows.Media.Imaging.BitmapImage(new System.Uri("/TermControls;component/Images/shift.png", System.UriKind.RelativeOrAbsolute));
    MainGrid.Resources.Add("EngRus", image);
}