2012-05-23 4 views
1

내 WPF 응용 프로그램에 편집 단추를 추가해야하는 양식이 있습니다. 지금은 양식이 항상 편집 모드이고 "보기 모드"가 없습니다. 그러나 여러 가지 이유로 사용자가 편집 단추를 클릭하고 편집 단추를 숨기고 그 자리에 저장 단추를 표시 할 때까지보기 모드에서 컨트롤을 유지해야합니다.MultiValueConverter의 결과 자체를 변환 할 수 있습니까?

내 양식에 이미 CanModify이라는 부울 DependencyProperty이 있습니다. 이는 사용자 권한을 통해 양식에 표시된 레코드를 편집 할 수있는 권한을 부여한 경우에 해당됩니다. InEditMode이라는 새로운 bool DependencyProperty을 추가합니다. 기본값은 false입니다. 버튼을 숨기고 활성화하는 것은 꽤나 간단합니다. 그러나 사용자가 레코드를 편집 할 수 없거나 편집 할 수 있고 폼이보기 모드에있는 경우 숨기고 싶은 컨트롤이 ComboBox입니다. 이를 위해 두 bool 속성을 AND 연산 한 결과를 변환 한 다음 Visibility 값으로 변환해야합니다.

나는 이미 IValueConverter을 구현하고 부울을 Visibility으로 변환하는 클래스를 가지고있다. 방금 bool의 배열을 ANDS로 취하는 (또는 매개 변수의 값에 따라 ORS를 수행하는) IMultiConverter을 구현하는 클래스를 작성했습니다.

내가하고 싶은 것은 IMultiConverter의 결과를 취하여 IValueConverter에 입력하여 결과를 Visibility으로 변환하는 것입니다. 내가 할 수 있을까? 아니면 코드 뒤에서 AND DependencyProperty으로 더 잘 수행 할 수 있을까요?

토니

답변

0

변환기를 연결할 수 없기 때문에 클래스에 다른 부울 속성을 추가했습니다. 새 속성이 변경 될 때 호출되는 두 속성에 메서드를 추가했습니다. 이들은 새로운 속성의 가치를 재 계산합니다. 그런 다음 문제의 컨트롤을 표시하거나 숨기려면 visbility 변환기에 원래 부울을 사용했습니다.

1

변환기를 연결할 수 없습니다.

대신 문자열 매개 변수 "bool"또는 "visibility"를 사용하도록 MultiValueConverter를 변경하십시오. 매개 변수에 따라 bool 또는 visibility 객체가 반환됩니다.

+0

할 것 문제에. 다른 두 속성이 값을 변경할 때 값이 설정된 다른 부울 속성을 추가하는 결과가 발생했습니다. 당신의 답을 답으로 표시하지는 않습니다. 왜냐하면 제가 한 일이 아니기 때문입니다. 그러나 당신의 대답의 첫 줄 때문에 나는 당신에게 상향 줄을주고 있습니다. 내 변환기는 MultiBinding에 바인딩 된 bool을 결합 할 때 사용할 연산에 대해 "AND"또는 "OR"을 전달할 매개 변수를 이미 사용하고 있습니다. –

2

실제로 체인을 변환 할 수는 있지만 내 자신의 예제는 아직 MultiValueConverters를 처리하지 않지만 LinkedMultiValueConverter을 구현하는 것은 어렵지 않습니다. 이 방법의 단점 중 하나는 현재 제공된 특성을 사용해야하는 변환기를 다시 만들어야한다는 것입니다.

자식 :

또는

https://github.com/pmacn/ValueConverters.WP8

을 //github.com/pmacn/ValueConverters.WP8.git 그리고 당신은 흥미 테이크의 다음

<con:LinkedConverter x:Name="MyFancyLinkedConverter"> 
    <con:BooleanInversionConverter /> 
    <con:BooleanToVisibilityConverter /> 
</con:LinkedConverter> 
+0

깔끔한 코드. 상자 밖에서는 그 기능이 없지만 그곳에서 매우 영리한 아이디어를 얻었습니다. –

+0

당신에게 효과가 없습니까?내가 오늘 직장에서 돌아 왔을 때 적절한 커밋을해야 할 것이다. (내가 github UI에서 놀아 다니는 대신에) 나는 내가 한 번 업데이트 할 것이다. –

+0

코드를 사용하고 있지 않습니다. 나는 작동하는 것을 가지고있다. –

관련 문제