2012-08-29 2 views
0

다음은 WPF에서 복잡한 컨트롤을 개발할 때 자주 겪게되는 문제입니다.WPF 바인딩을 여러 단계로 사용하는 방법

부모의 여러 수준까지 일부 속성을 바인딩하고 싶습니다.

Value="{Binding PropertyToBind, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" 

그러나이와

, 당신은 그냥 직접 부모에 결합 할 수있다, 나는 4 단계가 ... 그래서 마지막에 결합 4를 만든 :

나는 현재 RelativeSource 및 TemplatedParent로 이것을 사용하고 있습니다 좋은 가치에 묶어 라.

나는 내 조이스틱 제어 내 첫 번째 수준, 예를 들어

... 그들은 복잡한 컨트롤입니다, 개체의 제 4 단계를 제거 할 수 없습니다. 내 조이스틱에서 슬라이더 컨트롤 (2 레벨)을 위아래로 움직입니다. 내 슬라이더에는 Button (3 레벨)이 있습니다. 내 버튼에는 레벨 1 (조이스틱)의 속성에 바인딩하려는 텍스트 (네 번째 레벨)가 있습니다.

내가하는 일은 단추의 속성에 텍스트를 바인딩 한 다음 단추의 속성을 슬라이더 등의 속성에 바인딩하는 것입니다. 조이스틱. 때로는 바인딩 할 수있는 속성을 추가하여 사용자 지정 컨트롤을 만들어야합니다.

이, 그냥 예를 들어 내 시나리오입니다하지 않습니다 (예이 우리가 아마 수준을 제거 할 수 있지만 내에서) 내가 가진 대답하지 않으이 나이 개체를 제거를 ...

여러 수준에 직접 바인딩하는 방법이 있습니까? 각 레벨은 스타일의 ControlTemplate입니다. 내가 WPF 4, .NET 4.0을 사용하고

, 혼합 4, 당신은이 작업을 수행해서는 안 2010

답변

1

바인딩에 RelativeSource의 다른 순열을 시도한 적이 있습니까? 특히, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type SomeType}}을 사용하면 위의 특정 컨트롤을 찾을 수 있습니다.이 컨트롤은 사용자 시나리오에 적합 할 것 같습니다.

2

비주얼 스튜디오, 그것은 캡슐화를 중단하고 불필요한 의존성을 소개합니다. 당신이 설명하는 것은 길을 가야하는 것입니다 :

내가 무엇을하는 것은 그때 나는 등, 슬라이더의 하나에 버튼의 속성을 결합, 버튼의 속성에 내 텍스트를 결합입니다 ..

+0

그러나 바인딩 할 10 개의 속성이있을 때마다 10 개의 종속성 속성이있는 사용자 지정 컨트롤을 만들어야합니다. (버튼, 슬라이더 등을위한 커스텀 콘트롤) – mlemay

+0

@mlemay : 모든 것을 커스텀 프로퍼티가 필요하면 이상한 일을하고있는 것입니다. 또한 DataContext는 내부 컨트롤에 모든 방법으로 상속됩니다. 사용하지 않는 이유는 무엇입니까? 아니면 항상 DataContext를 변경하고 있습니까? –

+0

우리의 그래픽 디자이너는 계층 구조를 만들고, 모든 것을, 그가 어떻게 더 많은 것을 알지 못합니다. 재산에 묶여 ... 그는 프로그래머가 아닙니다. 우리는 간단한 해결책이 필요합니다. DataContext thx를 사용하여 무언가를 찾으려고합니다. – mlemay

관련 문제