2012-07-31 4 views
0

"ABC 12"와 같이 세 문자와 두 개의 숫자로 구성된 단일 속성이 있습니다. 내 프로젝트에 대한 요구 사항은 UI가이를 세 글자 조합에 대한 ComboBox와 숫자에 대한 TextBox로 나누도록 요청합니다. 나는 필요한 문자열 부분을 파싱하기 위해 변환기를 사용하여 매우 쉽게이 작업을 수행 할 수 있습니다.WPF의 여러 컨트롤에 바인딩 된 단일 속성

내 질문에 두 가지 다른 컨트롤의 값을 기반으로 속성을 다시 설정할 수 있도록 내 변환기에서 "ConvertBack"논리를 구현하는 방법이 있는지 여부입니다.

내 XAML :

<ComboBox IsEnabled="{Binding EditMode}" ItemsSource="{Binding AbbrevsList}"  
      DisplayMemberPath="SelectedAbbrev" SelectedValuePath="Abbrev" 
      SelectedValue="{Binding Row.Code, Converter=CodeAlphaConverter, 
          UpdateSourceTrigger=PropertyChanged}" /> 
<TextBox TextAlignment="Left"> 
    <TextBox.Text> 
      <Binding Path="Row.Code" Converter="CodeNumericConverter" 
        UpdateSourceTrigger="LostFocus"> 
      </Binding> 
     </TextBox.Text> 
</TextBox> 

감사합니다.

+1

두 가지 필드 (문자열 및 숫자)가 고전적으로 바인딩 된 다음 두 속성을 모두 결합하는 이유는 무엇입니까? – ykatchou

+0

그 일을 피한 유일한 이유는 영숫자 코드가 데이터 소스에 단일 문자열로 저장 되었기 때문입니다. – jpaull

+0

IMHO, 디자인 문제와 비슷합니다. 그렇다면 데이터 소스는 GUI와 동일한 객체가 아니어야합니다. 어떻게 생각해 ? – ykatchou

답변

1

WPF에서는 변환기 매개 변수를 바인딩 할 수 없으므로 접근 방식을 전환해야 할 수 있습니다. SO를 사용하는 대신에 다른 답변은보기 모델을 변경하여 논리를 두 개의 속성으로 만들고 그 속성에 바인딩하거나 개별 값을 변환기로 전달하는 대신 전체 개체를 전달합니다.

관련 문제