2011-06-28 11 views
1

私のビューモデル(MVVM)のプロパティ(string RFID、起き上がるPropertyChangedイベント)が発生するたびに、視覚的な表示(電球)をWPFアプリケーションに実装したいと思います。変更。私のウィンドウのDataContextがviewmodelに設定されています。電球のオン/オフを示す2つの画像があります。viewmodelのプロパティ変更のイメージの選択

私は、トリガーやスタイルを試してみましたが、それがうまくいかなかった:

<Image> 
     <Image.Style> 
      <Style TargetType="Image"> 
       <Setter Property="Source" Value="LightGrey.png"/> 
       <Style.Triggers> 
        <Trigger Property="RFID" Value="???"> 
         <Setter Property="Source" Value="LightGreen.png"/> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </Image.Style> 
    </Image> 

すべてのヘルプは歓迎です!

答えて

2

あなたのViewModelににブールIsLightOn性質を持っており、可能性があなたのRFID火災PropertyChangedイベントは、ViewModelにはIsLightOn = trueをオンにし、X秒後IsLightOn = falseをオンタイマーをセットするたび

+0

私はIsLightOnへのトリガプロパティを設定する問題を抱えています。私はサンプルコード(上記参照)を次のように変更しました: ''。エラー:Controls.Image型のスタイルプロパティIsLightOnが見つかりません。 – nabulke

+0

@nabulkeあなたの 'Trigger'を' DataTrigger'に変更してください。 ' ' – Rachel

+0

これはうまくいきました。ありがとうレイチェル。 – nabulke

1

追加のブールプロパティをたくない場合提案通りこれを行う簡単なバリューコンバータを書くことができます。

class AnyToBoolConverter: IValueConverter   
    { 
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
        { 
            return (value != null) ? true : false; 
        } 
          
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
        { 
            return DependencyProperty.UnsetValue; 
        } 
    } 

このコンバータは多くの状況で便利です。そして、あなたはこれを行うことができます。

<DataTrigger Binding="{Binding Path=RFID, Converter={StaticResource boolConverter}}" Value="True"> 
      <Setter Property="Source" Value="LightGreen.png"/> 
</DataTrigger> 
関連する問題