0

タッチ スクリーンで使用する WPF アプリケーションがあります。アプリケーション全体で、画面上のボタンが押されたときに音を鳴らすように依頼されました。私のアイデアは、これを行うためのスタイルを作成し、アプリにリソース辞書を含めることでした。それは非常にうまく機能します。ただし、このスタイルは別の DLL にあり、メイン アプリケーションでサウンド ファイルのパスを変更したいと考えています (以下の BoutonClickSound Url)。しかし、私はそれを行う方法を見つけることができませんでした。私はいくつかの醜いことを試しました:

    System.Windows.Application.Current.Resources.MergedDictionaries[0]["BoutonClickSound"] = new Uri(m_MainVM.ButClickSoundPath);
System.Windows.Application.Current.Resources.MergedDictionaries[0].MergedDictionaries[0]["BoutonClickSound"] = new Uri(m_MainVM.ButClickSoundPath);

しかし、どれも機能していないようです...

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

<sys:Uri x:Key="BoutonClickSound">c:\buttonclick.wav</sys:Uri>

<Style TargetType="{x:Type FrameworkElement}"  x:Key="SoundButton">
    <Style.Triggers>
        <EventTrigger RoutedEvent="PreviewMouseDown">
            <SoundPlayerAction x:Name="SoundPlayer" Source="{DynamicResource BoutonClickSound}" />
        </EventTrigger>
    </Style.Triggers>
</Style>

<Style TargetType="{x:Type primitives:Selector}"  x:Key="SoundSelectionChange">
    <Style.Triggers>
        <EventTrigger RoutedEvent="SelectionChanged">
            <SoundPlayerAction x:Name="SoundPlayer" Source="{DynamicResource BoutonClickSound}" />
        </EventTrigger>
    </Style.Triggers>
</Style>

これを行う方法はありますか?

ありがとうございました。

4

1 に答える 1

0

同じキーでローカル リソースを宣言するだけです。

アプリケーションでグローバルに使用する場合は、ライブラリから MergedDictionary を含めたで MergedDictionary に追加できます。

次のように別のエントリを追加します。

<sys:Uri x:Key="BoutonClickSound">c:\differentfile.wav</sys:Uri>

そして、スタイルが代わりにそのファイルを使用するようにする必要があります。

編集:

コード ビハインドでリソースを設定するには、まずローカル リソース ディクショナリに追加する必要があります。

Resources.Add("BoutonClickSound", new Uri("your uri here"));

追加した後、後で変更する場合は、再度追加することはできません。変更する必要があります。

Resources["BoutonClickSound"] = new Uri("your uri here");
于 2012-06-01T16:08:52.223 に答える