2010-03-28 39 views
7

I MVVM kullanıyorum ve anında simgesini değiştirebilirsiniz şekilde benim ViewModel Görüntü Kaynağı mülkiyet databind çalışıyorum. Bunun için takip edilecek en iyi model hangisidir? ViewModel'imi uygun şekilde değiştirmek için hala esneklik var, ancak xaml veya ViewModel'de nereden başlayacağımı bilmiyorum. WPF databind Image.Source MVVM

Açık olmak gerekirse, ben, (Görünüm bilmek için işte) benim ViewModel spesifik görüntüler hakkında bilmek farklı resimler tetikler sadece devlet istemiyoruz. Şimdilik sadece iki eyaletim var, Kırmızı ve Yeşil diyelim. Bir Enum özelliği mi yoksa bir bool mu oluşturmalıyım? Ve sonra görüntü kaynağını nasıl değiştirebilirim?

cevap

10

Bir DataTrigger kullanabilir ve ViewModel bir özelliğin değerini temel resim (tamamen XAML) değiştirebilirsiniz. Ben şahsen, birden fazla eyalet isteyebileceğinizden, bir enum kullanırdım.

VisualStateManager yanı bunun için çalışacaktır ancak WPF Futures veya .NET 4.

bir DataTrigger kullanmak için, aşağıdaki gibi bir şey yapabilirsiniz gerektirecektir

:

<Image> 
    <Image.Style> 
    <Style TargetType="Image"> 
     <Setter Property="Source" Value="1.png" /> 
     <Style.Triggers> 
     <DataTrigger Binding="{Binding ViewModelEnumProperty}" Value="Image2"> 
      <Setter Property="Source" Value="2.png" /> 
     </DataTrigger> 
     </Style.Triggers> 
    </Style> 
    </Image.Style> 
</Image> 

Bu "kullanacak 1.png ", ancak enum, VM'de" Image2 "ye ayarlandığında, 2.png'ye geçer. Daha fazla DataTriggers gerektiği gibi eklenebilir.

+0

Kullanıyorum. Net 4. Bu konuda biraz daha ayrıntılı olabilir misiniz? Belki bir örnek? – BrettRobi

+0

İkinci Reed'in çözümü. Görünümünüzde bir enum ve görünümünüzde bir datatrigger kullanın. http://msdn.microsoft.com/en-us/library/system.windows.datatrigger.aspx –

+0

@BrettRobi: işte –