2010-03-28 5 views
7

MVVM을 사용 중이며 Image의 Source 속성을 내 ViewModel에 databind하여 해당 아이콘을 즉시 변경할 수 있습니다. 이것을 위해 따라야 할 가장 좋은 패턴은 무엇입니까? 내 ViewModel을 변경할 수있는 유연성이 여전히 있지만 xaml 또는 ViewModel 중 어느 위치에서 시작해야할지 모르겠습니다.WPF databind MVVM의 Image.Source

분명히하기 위해, ViewModel이 다른 이미지를 트리거하는 상태 인 뷰를 알기 위해 특정 이미지를 알기를 원하지 않습니다. 지금은 두 가지 상태가 있습니다. 빨강과 초록을 말할 수 있습니다. Enum 속성 또는 bool을 만들어야합니까? 그런 다음 이미지 소스를 전환하려면 어떻게 데이터 바인딩합니까?

답변

10

DataTrigger를 사용하고 ViewModel의 속성 값을 기반으로 이미지를 (전체적으로 XAML로) 변경할 수 있습니다. 저는 개인적으로 열거 형을 사용합니다. 여러 주를 원할 수도 있기 때문입니다.

VisualStateManager이이 작동하지만, WPF 선물 또는 .NET 4

DataTrigger를 사용하기 위해, 당신은 같은 것을 할 수있는 필요합니다

:

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

을이 "사용 1.png "이지만 VM에서 열거 형이"Image2 "로 설정되면 2.png로 전환됩니다. 필요에 따라 더 많은 DataTriggers를 추가 할 수 있습니다.

+0

.Net을 사용하고 있습니다. 4. 이것에 대해 자세히 설명해 주시겠습니까? 어쩌면 예가 있을까요? – BrettRobi

+0

두 번째 리드의 해결책. 뷰 모델에서 enum을 사용하고 뷰에서 datatrigger를 사용하십시오. http://msdn.microsoft.com/en-us/library/system.windows.datatrigger.aspx –

+0

@BrettRobi : 거기에 가서 –