1

アプリケーションの開始時に「再生」アイコンを表示する単純な「再生/一時停止」ボタンがあります。そのコードは次のとおりです。

<Button x:Name="playPauseButton" Style="{DynamicResource MetroCircleButtonStyle}" 
                        Content="{DynamicResource appbar_control_play}"
                        HorizontalAlignment="Left" Margin="77,70,0,0" VerticalAlignment="Top" Width="75" Height="75" Click="Button_Click"/>`

私がやりたいのは、再生アイコンを押したときに一時停止アイコンに変更することです。コンテンツを に変更するだけです{DynamicResource appbar_control_pause}。ただし、次のことを行うと:

playPauseButton.Content = "{DynamicResource appbar_control_stop}";

ボタン内に文字通り文字列だけを表示します。どうすればそのプロパティを変更できますか?

4

1 に答える 1

5

XAML で記述した文字列は特殊なので ( Markup Extensions{ }と呼ばれます)、XAML プロセッサでは "文字列" として扱われません (代わりに、文字列を直接割り当てるのではなく、拡張機能を呼び出して結果のオブジェクトを提供します)。特に、ここではDynamicResource マークアップ拡張を使用します。

ただし、これは XAML プロセッサでのみ機能するため、ContentC# コードから文字列を使用してプロパティを割り当てると、特定の文字列が割り当てられるだけで、XAML プロセッサによってまったく解析されません (DynamicResourceマークアップ拡張機能は呼び出されません)。

コードでリソースをロードする場合は、次を試すことができます。

playPauseButton.Content = FindResource("appbar_control_stop");

または、それを行う場合は、次のようなSetResourceReferenceDynamicResourceを試すことができます。

playPauseButton.SetResourceReference(ContentControl.ContentProperty, "appbar_control_stop");

この 2 番目の方法は、(単にリソースをロードするのではなく) リソースへの実際の参照を割り当てるため、リソースが変更された場合 (親が変更されたため、またはイベントなどを使用したため)、プロパティが再評価されます。

于 2015-04-10T20:07:17.763 に答える