0

我有图片

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

我在代码隐藏中有变量 bool IsOk。我怎样才能将它绑定到源属性并有条件,当它是真实的源将是“../Shared/Images/ok.png”,而当它是假的“../Shared/Images/cancel.png”?我可以使用它触发吗?

4

2 回答 2

4

不需要触发器。

只需将 Image 的 Source 属性绑定到 ViewModel 上的一个属性,该属性返回 ok 图像或 cancel 图像。

修改您的代码,以便每当 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

Marty 的回答很干净,但如果你真的只是想使用触发器......这样的方法也可能有效,但就像我说的,Marty 的更干净。:)

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