首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataTrigger for IconTemplate in RadWindow

DataTrigger for IconTemplate in RadWindow
EN

Stack Overflow用户
提问于 2016-04-18 09:05:35
回答 2查看 117关注 0票数 0

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

代码语言:javascript
复制
<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>

由于某些原因,它总是显示默认图标。我还想提到的是,我确实实现了属性更改--我只是将相同的样式复制到窗口内的一个控件上,而不是在模板中,并且它工作了--那么问题在于,该属性是否改变了任何想法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-18 10:13:57

所以问题是,一旦加载了RadWindow,它就不会改变图标。解决办法:

代码语言:javascript
复制
<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值。谢谢大家的帮助。

票数 1
EN

Stack Overflow用户

发布于 2016-04-18 09:54:32

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

代码语言:javascript
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36689660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档