C# RadWindow中IconTemplate的数据触发器

C# RadWindow中IconTemplate的数据触发器,c#,wpf,telerik,datatrigger,radwindow,C#,Wpf,Telerik,Datatrigger,Radwindow,我有一个WPF应用程序,我使用Telerik。 我正在尝试设置图标模板,使其具有默认值,并且仅在特定条件下才会绑定图像源: <telerik:RadWindow.Resources> <Style x:Key="CustomIconStyle" TargetType="Image"> <Style.Triggers> <DataTrigger Binding="{Binding Path=IsConditi

我有一个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>

由于某些原因,它总是显示默认图标。 我还想提到的是,我确实实现了更改的属性——我将相同的样式复制到了窗口中的控件,而不是模板中,并且成功了——所以问题不在于更改了属性
有什么想法吗?

你可以使用这样的触发器:

<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>

您可以使用如下触发器:

<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的正确值。
谢谢大家的帮助

所以问题是,一旦加载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的正确值。
谢谢大家的帮助

你的回答帮助我解决了这个问题!!由于某种原因,在初始化控件的组件后,rad窗口不会更改其图标。当我使用转换器时,它工作了,因为它被调用过一次。我仍然需要绑定,所以我只是确保布尔值在构造函数中首先具有正确的值。将发布我的答案我有,我与另一个控件检查属性更改是否有效您的答案帮助我解决了问题!!由于某种原因,在初始化控件的组件后,rad窗口不会更改其图标。当我使用转换器时,它工作了,因为它被调用过一次。我仍然需要绑定,所以我只是确保布尔值在构造函数中首先具有正确的值。将发布我的回答我有,我用另一个控件检查了属性更改是否有效