0

私は画像を持っています

<Image HorizontalAlignment="Left"  VerticalAlignment="Top" Source="" Width="20" Height="20" />

コードビハインドに変数 bool IsOk があります。それをソース プロパティにバインドするにはどうすればよいですか? true の場合はソースが "../Shared/Images/ok.png" になり、false の場合は "../Shared/Images/cancel.png" になりますか? トリガーに使用できますか?

4

2 に答える 2

4

トリガーは必要ありません。

ImageのSourceプロパティを、ok画像またはcancel画像のいずれかを返すViewModelのプロパティにバインドするだけです。

IsOkが変更されるたびに、ボタン画像プロパティのPropertyChangedイベントが発生するように、コードを変更します。このように、IsOkプロパティを変更するたびに画像が自動的に更新されます。このようなもの:

public bool IsOk
{
    get
    {
        return _isOk;
    }
    set
    {
        if (_isOk != value)
        {
            _isOk = value;
            RaisePropertyChanged("IsOk");
            RaisePropertyChanged("ButtonImage");
        }
    }
}

public Image ButtonImage
{
    get
    {
        if (_isOk)
            return _okImage;
        else
            return _cancelImage;
    }
}

..そしてXAMLで:

<Image Source="{Binding ButtonImage}" ... />
于 2012-09-05T20:53:44.640 に答える
1

マーティの答えはきれいですが、本当にトリガーを使いたいだけなら...このようなものもうまくいくかもしれませんが、私が言ったように、マーティのほうがきれいです。:)

<Image HorizontalAlignment="Left"  VerticalAlignment="Top" Source="" Width="20" Height="20">
          <i:Interaction.Triggers>
                <ei:DataTrigger Value="False"
                                Binding="{Binding BooleanValueBinding}">
                  <ei:ChangePropertyAction PropertyName="Source"
                                           Value="../Shared/Images/cancel.png" />
                </ei:DataTrigger>
                <ei:DataTrigger Value="True"
                                Binding="{Binding BooleanValueBinding}">
                  <ei:ChangePropertyAction PropertyName="Source"
                                           Value="../Shared/Images/ok.png" />                  
                </ei:DataTrigger>
          </i:Interaction.Triggers>
    </Image>
于 2012-09-05T20:58:31.437 に答える