WPF: изменение источника MediaElement с помощью ResourceDictionary - PullRequest
0 голосов
/ 01 июля 2010

Я хочу использовать фоновую музыку в своем приложении WPF.Как вы можете видеть здесь: Как сделать фоновую музыку для моего WPF-приложения?

Поэтому я использую MediaElement.

Теперь я хочу изменить его источник во время работы приложения.

Я уже делаю нечто подобное с некоторыми фоновыми изображениями.Там у меня есть разные ResourceDictionaries, которые я переключаю, чтобы показать разные «темы».

Один из моих словарей выглядит так:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <ImageBrush x:Key="Backgroundpic" ImageSource="picture.png"/>

         ...

</ResourceDictionary>

Так что я могу использовать его в xaml следующим образом:

...
<Grid x:Name="Bg" Background="{DynamicResource Backgroundpic}"/>
...

Но КАК я могу сделать это с моим MediaElement-Source, чтобы я мог использовать его так:

 <MediaElement x:Name="myMediaElement" Source="{DynamicResource ???}" />

Я просто не знаю, что записать в мой ResourceDictionary.

1 Ответ

2 голосов
/ 01 июля 2010

Источник - Uri , поэтому ваш ресурс должен быть Uri.(Обратите внимание, что System.Uri находится в сборке System, а не mscorlib, поэтому ему нужно другое пространство имен XML, чем вы бы использовали для таких типов, как String):

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=System">

    <sys:Uri x:Key="mediaSource">something.mp3</sys:Uri>

Затем вы можете ссылаться на него с помощью Source={DynamicResource mediaSource},

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...