2016-04-18 9 views
0

私はWPFアプリケーションを持っており、Telerikを使用しています。RadWindowのIconTemplate用DataTrigger

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

それは常にデフォルトのアイコンを表示するいくつかの理由: は、私はそれがデフォルト値を持っており、唯一の特定の条件にそれがイメージソースを結合するように、アイコンテンプレートを設定しようとしています。 私はプロパティを変更した実装についても言及したいと思います。同じスタイルをテンプレート内ではなくウィンドウ内のコントロールにコピーしていました。問題はプロパティの変更ではありません。 ?

+0

あなたの答えは私が問題を見つけ出すのを助けました!!何らかの理由で、コントロールのInitializeComponentの後に - ラドウインドウはアイコンを変更しません。私がコンバータを使用したとき、それは一度呼び出されたので機能しました。私はまだバインディングが必要なので、ブール値がコンストラクタで正しい値の最初のものであることを確認しました。私の答えを掲示するでしょう –

+0

私はそれを持っています、そして、私はプロパティの変更が動作する別のコントロールでチェックしました –

答えて

1

だから、問題は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の正しい値を与えることです。 皆さんありがとうございます。

1

あなたはそのようなトリガを使用することができます。

<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> 
関連する問題