RadWindow 中 IconTemplate 的 DataTrigger

DataTrigger for IconTemplate in RadWindow

我有一个 WPF 应用程序并且我使用 Telerik。 我正在尝试设置图标模板,使其具有默认值,并且仅在特定条件下才会绑定图像源:

<telerik:RadWindow.Resources>
    <Style x:Key="CustomIconStyle" TargetType="Image">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=IsConditionMet, ElementName=MyWindow, UpdateSourceTrigger=PropertyChanged}" Value="True">
                <Setter Property="Source" Value="{Binding Path=IconImageSource, ElementName=MyWindow, UpdateSourceTrigger=PropertyChanged}"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</telerik:RadWindow.Resources>
<telerik:RadWindow.IconTemplate>
    <DataTemplate>
        <Image Style="{StaticResource CustomIconStyle}" Source="/MyAssembly;Component/Resources/myIcon.ico" Height="16" Margin="0,0,5,0"/>
    </DataTemplate>
</telerik:RadWindow.IconTemplate>

出于某种原因,它始终显示默认图标。 我还想提一下,我确实实施了 属性 更改 - 我将相同的样式复制到 window 内的控件而不是模板中并且它有效 - 所以问题不是随着 属性 改变 有什么想法吗?

您可以像这样使用触发器:

<telerik:RadWindow.Resources>
        <Style TargetType="Image" x:Key="Style1">
            <Setter Property="Source" Value="default.ico"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding MyCondition}" Value="true">
                    <Setter Property="Source" Value="custom.ico"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </telerik:RadWindow.Resources>
    <telerik:RadWindow.IconTemplate>
        <DataTemplate>
            <Image Style="{StaticResource Style1}" Height="16" Margin="0,0,5,0"/>
        </DataTemplate>
    </telerik:RadWindow.IconTemplate>

所以问题是一旦加载了 RadWindow,它就没有改变图标。 解决方案:

<telerik:RadWindow.IconTemplate>
    <DataTemplate>
        <Image  Height="16" Margin="0,0,5,0">
            <Image.Style>
                <Style TargetType="{x:Type Image}">
                    <Setter Property="Source" Value="/MyAssembly;Component/Resources/myIcon.ico" />
                    <Style.Triggers>
                        <DataTrigger Value="True" Binding="{Binding Path=IsConditionMet, ElementName=MyWindow}">
                            <Setter Property="Source" Value="{Binding Path=IconImageSource, ElementName=MyWindow}"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Image.Style>
        </Image>
    </DataTemplate>
</telerik:RadWindow.IconTemplate>

但诀窍是在加载前在 windows 构造函数中给出 IsConditionMet 的正确值。 感谢大家的帮助。