C# RadWindow中IconTemplate的数据触发器
我有一个WPF应用程序,我使用Telerik。 我正在尝试设置图标模板,使其具有默认值,并且仅在特定条件下才会绑定图像源: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
<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窗口不会更改其图标。当我使用转换器时,它工作了,因为它被调用过一次。我仍然需要绑定,所以我只是确保布尔值在构造函数中首先具有正确的值。将发布我的回答我有,我用另一个控件检查了属性更改是否有效