2012-09-05 50 views
0

代碼我有圖片圖像源取決於後面可變

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

和我在代碼隱藏變量布爾ISOK。 如何將它綁定到源屬性,並有條件,當它是真正的源將是「../Shared/Images/ok.png」,當假「../Shared/Images/cancel.png」? 我可以使用觸發器嗎?

回答

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

馬蒂的答案是更清潔,但我記得有像你一樣的東西顯示克里斯。謝謝! – netmajor

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}" ... />