2013-10-28 2 views
0

리소스 키가 GroupBoxHeaderCaption이고 값이 "SomeString"인 .resx 파일이 있다고 가정 해 봅니다.레이블 내용 바인딩

에서 ViewModel 나는 Description이라는 string 속성이 있습니다.

string.Format("{0}: {1}", resx.GroupBoxHeaderCaption, viewModel.Description) 

는 XAML에서이 작업을 수행 할 수 있습니다 :

는 내가 달성하고자하는 것은이 (주어진 된 .resx 파일이 using resx = [...]로 언급되고 뷰 모델 viewModel라고합니다)인가? 나는이를 얻었으나, 제대로 동작하지 않습니다 : 으로

<GroupBox Margin="4"> 
     <GroupBox.HeaderTemplate> 
      <DataTemplate> 
       <Label> 
        <Label.Content> 
         <MultiBinding StringFormat="{}{0}: {1}"> 
          <Binding Path="{x:Static my:MyResources.GroupBoxHeaderCaption}" /> 
          <Binding Path="viewModel.Description" /> 
         </MultiBinding> 
        </Label.Content> 
       </Label> 
      </DataTemplate> 
     </GroupBox.HeaderTemplate> 

가 내 말 내가 얻을 작동하지 GroupBoxHeaderCaption 빨간색 밑줄라는 오류 :

잘못된 회원 유형 : 예상 타입 '입니다 PropertyPath '이고 실제 유형은'string '입니다.

나는 내 viewModel.Description에 대한 변환기를 작성할 수 알지만,이 모든 XAML을 할 수있는 방법은 무엇입니까? 의 .resx 파일에서 일부 :

<GroupBox Margin="4" Header="{Binding viewModel.Description}" 
        HeaderStringFormat="SomeString: {0}"> 

내가 "SomeString을"가져 오려는 :이 작업을 수행 할 때


내가 원하는 결과를 얻을.

+0

Visual Studio의 리소스 디자이너 창에서'Access Modifier' 속성을'Public'으로 설정 했습니까? 리소스를 공개적으로 액세스 할 수있게 만들었습니까? – Sheridan

+0

네, 절대적으로 - 저는이 리소스 파일을 아무 문제없이 XAML의 다른 곳에서 사용하고 있습니다. 단지 리소스 모델을 뷰 모델 속성과 결합하고 싶습니다. 바인딩 StringFormat이이를 수행 할 수 있는지 궁금합니다. 마치 문자열 *을 처리 할 수없는 것처럼 보입니다. 문자열 * 속성 *이 필요합니다. ... –

+0

'StringFormat = "{} Cost : {0}"'- 우물 같은 것을주는 예제와 같습니다. .resx 파일에서 "비용 :"부분을 가져 오십시오. –

답변

2

방금 ​​오류가 발생하는 이유를 알아 냈습니다. 과 같은 Path 속성을 참조 할 수 없기 때문입니다. MultiBinding입니다.

나는 어쩌면이 같은 시도해야한다는 생각이 올바른 구문 인 경우 불행하게도

<MultiBinding StringFormat="{}{0}: {1}"> 
    <Binding Path="GroupBoxHeaderCaption" Source="{x:Static my:MyResources}" /> 
    <Binding Path="viewModel.Description" /> 
</MultiBinding> 

를, 그래서 다시 오세요, 지금이 시도 할 수없고 잘 모르겠어요 더 문제가 있으면 알려주세요.

+0

아직 시도하지는 않았지만 보이지 않는 상태에서 * 문자열 * 자체에 직접적으로 연결되는 것이 아니라 리소스 파일에서 문자열 * 속성 *을 참조하는 것이 좋습니다. –

+0

... 불행히도'Source = "{x : Static my : MyResources}"는 실패합니다. "StaticExtension에 지정된 멤버가 있어야합니다."... –

+1

그래, 그게 말이 되네. 당신의 뷰 모델에 대한 속성과 코드에서 리소스로부터 값을 설정하고 그 속성으로'Binding'? – Sheridan