繁体   English   中英

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>

由于某些原因,它始终显示默认图标。 我还想提到我确实实现了属性的更改-我只是将相同的样式复制到了窗口内部而不是模板中的控件上,并且可以正常工作-所以问题不在于属性更改了吗?

您可以使用类似的触发器:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM