2011-08-25 3 views
1

두 개의 매개 변수 (values 배열)를 사용하는 IMultiValueConverter에서 상속받은 간단한 변환기가 있습니다.IMultiValueConverter의 매개 변수는 항상 동일합니까?

public class TicketNoConverter : IMultiValueConverter 
{ 
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
    { 
     var dataContext = values[0] as ViewModel; 
     var data = values[1] as String; 
    } 
} 

나는 나의 컨버터는 싱글 톤 알고 있지만 서로 다른 데이터를 포함 ViewModel에도 불구하고 내 컨버터는 항상 같은 ViewModel 예 (첫 번째 매개 변수 바인딩)와 같은 Remarks 텍스트를 받았다.

이 XAML을 사용하면 Remarks이 올바른 값으로 올바르게 표시됩니다. I가 결합 매개 변수로 전달하면 Remarks

<TextBlock 
    Grid.Column="1" 
    Style="{StaticResource EditorValueStyle}" 
    Text="{Binding ViewModel.Remarks}" /> 

그러나, 다음로드의 첫 번째 항목에서 전달 제 ViewModel 같은 파라미터 값을 사용한다. 여기

<ContentControl Grid.Column="1"> 
     <ContentControl.Content> 
      <MultiBinding Converter="{StaticResource TicketNo}"> 
       <Binding Path="" /> 
       <Binding Path="ViewModel.Remarks" /> 
      </MultiBinding> 
     </ContentControl.Content> 
    </ContentControl> 

나는 내 변환기를 등록하는 데 사용하는 XAML입니다 : 이것은 XAML 어떻게 생겼는지입니다

<local:TicketNoConverter x:Key="TicketNo" /> 

이 문제에 파고가 약간 더 MultiBinding에 전달 된이 매개 변수는 항상 2입니다 값이 부터ViewModel으로 변경되었습니다.

ViewModel의 현재 인스턴스가 사용되도록하려면 어떻게해야합니까?

+0

바인딩에 대한 자세한 정보를 제공해야합니다. 더 잘 이해하는 데 도움이되는 xaml 코드를 게시하려고합니다. 코드가 예상대로 작동하고, 콘텐츠 제어를위한 데이터 컨텍스트가 무엇인지 변환기로 전송됩니다. – Bathineni

답변

2

일단 바인딩을 설정하면 데이터 컨텍스트가 변경되지 않으면 새로 고칩니다. 뷰의 데이터 컨텍스트가 뷰 모델 또는 자체에 설정되어 있습니까? 뷰 모델에 설정되어 있지 않으면 바인딩을 강제로 새로 고쳐야합니다.

보기 모델이 변경 될 때 INotify 이벤트가 발생합니까?

+0

첫 번째 질문의 의미가 확실하지 않습니다. 나는'INotify'를 구현했고, 나의 가치 모델을 통과하는 다른 모든 속성들이 값 변환기를 통과하는 것을 제외하고는 제대로 표시되기 때문에 그것이 작동한다는 것을 알고 있습니다. – gcso

+0

저장중인 뷰 모델에 대한 참조는 어디에 있습니까? 보기에서? 하나의 뷰 모델, 컬렉션이 있습니까? UI에 어떻게 바인딩되어 있습니까? 일반적으로 뷰 모델을 내보기의 속성으로 설정합니다. 그런 다음 변경되면 UI를 업데이트하는 INotify가 실행됩니다. – tsells

+0

내 VM에 대한 참조가 어디에 있는지 잘 모르겠습니다. 메인 윈도우를 해결하면 전체 애플리케이션을 구동하는 DI 컨테이너를 사용합니다. 내'ViewModel' 객체는 뷰 당 하나이므로 하나입니다. 나는 내 값 변환기를 제거하고 값을 직접 사용하여 올바른 데이터가 출력되므로 내보기가 속성에 변경 사항이 있음을 알려주므로 정말 어려움을 겪습니다. 그리고 나는 모든 다른 데이터가 그것이 있어야하는 것을 반영한다는 것을 알 수 있습니다. – gcso