2014-11-07 2 views
0

저는 MVVM의 초보자입니다. 선택한 treeview 항목을 텍스트 블록에 바인딩하려고했습니다. 나는 해결책을 찾았다 here. 그래서 난 ... 내 프로젝트에서 동일하게 구현 : MVVM treeview에서 변환기를 사용하여 선택한 항목

<TextBox Text="{Binding SelectedItem, Converter={StaticResource GetTextFromItemConverter}, ElementName=tvMain, Mode=OneWay}" 

은 또한 (솔루션에서와 동일) 내 뷰 모델에 GetTextFromItemConverter 클래스를 만들었습니다. 하지만 xaml에서 오류가 발생했습니다.

GetTextFromItemConverter 리소스를 확인할 수 없습니다.

이 문제를 해결하는 방법 ??

+0

리소스 키 'GetTextFromItemConverter'를 사용하여 어디에서 변환기의 인스턴스를 선언합니까? 나는 당신이 아무 것도 선언하지 않았고, 단지 리소스 키에 클래스 이름을 사용한다고 의심하지 않는다. –

+0

@KingKing 'GetTextFromItemConverter'의 resouce 키를 추가하는 방법을 알려주시겠습니까? –

답변

1

GetTextFromItemConverter 클래스가 TestDemo이라는 일부 네임 스페이스에 정의되어 있다고 가정합니다. 먼저 XAML의 일부 리소스로 해당 클래스의 인스턴스를 만들어야합니다. 추가 된 부분에 대한

<Window ... 
     xmlns:local="clr-namespace:TestDemo"> 
    <Window.Resources> 
    <local:GetTextFromItemConverter x:Key="textConverter"/> 
    </Window.Resources> 
    <!-- ... --> 
    <TextBox Text="{Binding SelectedItem, 
        Converter={StaticResource textConverter}, 
        ElementName=tvMain, Mode=OneWay}"/> 
    <!-- ... --> 
</Window> 

참고 : 예를 들어, 당신은 Window.Resources의 일부 자원으로 추가 할 수 있습니다, 우리는 우리가 이런 일을 해당 클래스의 인스턴스를 만들 수 있도록 클래스의 네임 스페이스를 가져와야 xmlns:local="clr-namespace:TestDemo"TestDemo 네임 스페이스를 가져오고 별칭은 local입니다. ...은 Window에있는 항목의 자리 표시 자입니다 (디자이너가 자동 생성).

0

매핑 한 뷰 모델이 제대로 참조되었는지 확인하십시오. 그렇다면 사용 된 변환기에 대한 경로 참조를 확인하십시오. 예를 들어

: 컨버터가 리소스 사전에 배치

xmlns:converter="using your namespace path"-location.

관련 문제