xaml中的图像源取决于变量后面的代码

时间:2012-09-05 20:38:28

标签: c# image xaml

我有图片

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

我在代码隐藏中有变量bool IsOk。 如何将它绑定到source属性并且具有以下条件:当它是真正的源时将是“../Shared/Images/ok.png”并且当错误为“../Shared/Images/cancel.png”时? 我可以使用触发器吗?

2 个答案:

答案 0 :(得分:4)

无需触发器。

将Image的Source属性绑定到ViewModel上的属性,该属性返回ok图像或取消图像。

修改代码,以便每当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}" ... />

答案 1 :(得分: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>