私は既にいくつかの質問があることを知っていますが、私はそれらの問題を解決できません。データテンプレートを使用して画像を切り替える
問題:データテンプレートを使用してイメージを変更しようとしましたが、デフォルトイメージだけが表示されます。
コード:私の背後にあるコードで
<Window.Resources>
<DataTemplate x:Key="MultiTemplate">
<Image Height="17" Width="17">
<Image.Style>
<Style TargetType="{x:Type Image}">
<Setter Property="Source" Value="{svg2Xaml:SvgImage VideoControllerTester;component/Resources/Start.svg}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding MultiTrigger}" Value="start">
<Setter Property="Source" Value="{svg2Xaml:SvgImage VideoControllerTester;component/Resources/Start.svg}"/>
</DataTrigger>
<DataTrigger Binding="{Binding MultiTrigger}" Value="stop">
<Setter Property="Source" Value="{svg2Xaml:SvgImage VideoControllerTester;component/Resources/Stop.svg}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</DataTemplate>
</Window.Resources>
<ContentControl ContentTemplate="{DynamicResource MultiTemplate}"/>
MultiTriggerは= "開始" または "停止" に設定します。 私のXAMLコードこのようなものです。
質問:コンテンツコントロールで画像を表示できますか?それとも、私はデータテンプレートで何かばかげたことをしますか?
編集:
public string MultiTrigger
{
get { return _multiTrigger; }
set
{
_multiTrigger = value;
RaisePropertyChanged();
}
}
ContentControlのDataContextは、MultiTriggerプロパティを持つオブジェクトに設定する必要があります。 MultiTriggerプロパティ設定ツールは、PropertyChangedイベントを発生させる必要があります。 – Clemens
... 'MultiTrigger'がウィンドウクラスのプロパティであれば、' RelativeSource = {RelativeSource AncestorType = Window} 'を使ってバインドする必要があります。 –
それに加えて、実際にはDataTemplateでContentControlは必要ありません。画像スタイルをリソースとしてImageコントロールに直接適用することもできます。 – Clemens