다른 유형의 양식 (TextBox/TextBlock, ComboBox 등)을 필요로하기 때문에 동적 필드 생성기에서 MVVM 모델을 사용하고 있습니다. 여기서 필드는 데이터베이스에서 가져옵니다. 문제는 양식의 TextBlock에 표시하기 위해 사전에서 값을 검색하려고하지만 값을 표시 할 수 있도록 검색된 키를 바인딩하는 방법을 모르겠습니다. 다음 바인딩 방법으로키 기반 사전 값을 코드 숨김의 TextBlock에 바인딩하려면 어떻게해야합니까?
TextBlock textBlock = new TextBlock();
textBlock.SetBinding(TextBlock.TextProperty, createFieldBinding(myPropertyName);
:
현재, 나는 다음과 같은 일을하고 내가 뷰 모델에 Score
속성에 매핑 Score
등을 통해 뭔가를 통과
private Binding createFieldBinding(string fieldName) {
Binding binding = new Binding(fieldName);
binding.Source = this.DataContext;
binding.UpdateSourceTrigger = UpdateSourceTrigger.LostFocus;
return binding;
}
, 하지만 사전 키에 바인딩하여 값을 검색하는 방법은 무엇입니까?
가능한 경우 myDictionaryProperty[myDictionaryKey]
과 같은 것으로 바인딩 할 수 있기를 바랍니다.
예 : PlayerScore
가 Dictionary<int, int>
및 PlayerID
은 int
이고 어디 는 아래 1 의 ID와 플레이어의 PlayerScore
를 생성한다.
<TextBlock Name="textBlockA" Text="{Binding PlayerScore[1]}" />
는 "createFieldBinding"에 전달하는 문자열 속성 경로 : 인덱스 속성에 바인딩
<TextBlock Name="textBlockA" Text="{Binding PlayerScore[1]} />
당신은 (A [MultiBinding] 만들어야합니다 http://msdn.microsoft.com/en-us/library/ system.windows.data.multibinding.aspx), [이 질문에 대한 답변] (http://stackoverflow.com/q/13799705/1136211)에서 오늘 질문했습니다. – Clemens
MVVM을 모르겠습니다. 나는 방금 Dictionary와 Path = Value에 Source를 사용한다. – Paparazzi
@Clemens Awesome, 고마워! 내가 원했던 것을 위해 잠시 시간을 보냈지 만 그 해결책이 나를 위해 일한다. –