나는 개발중인 wpf 컨트롤이 있습니다.종속성 속성 올바른 사용
이 컨트롤은 다른 컨트롤을 포함하고 캡슐화합니다.
컨트롤을 사용하는 창에 내부 컨트롤의 속성을 노출하려고합니다. 또한이 속성이 변경되면 내부 컨트롤에서 논리를 수행하기를 원합니다.
제안 사항?
나는 개발중인 wpf 컨트롤이 있습니다.종속성 속성 올바른 사용
이 컨트롤은 다른 컨트롤을 포함하고 캡슐화합니다.
컨트롤을 사용하는 창에 내부 컨트롤의 속성을 노출하려고합니다. 또한이 속성이 변경되면 내부 컨트롤에서 논리를 수행하기를 원합니다.
제안 사항?
내부 컨트롤과 외부 컨트롤은 모두 종속성 속성을 정의해야합니다. 외부 제어를위한 템플릿 내부 제어를 포함해야하며, 등록을 함께 결합한다 :
<local:InnerControl SomePropertyOnInnerControl="{TemplateBinding SomePropertyOnOuterControl}"/>
이 모두 사용자의 제어와는 독립적으로 사용할 수있는 서로로부터 분리되어 보장한다. 속성은 해당 컨트롤에서의 사용에 따라 명명 될 수 있습니다. 예를 들어 내부 컨트롤은 Text
과 같은 것으로, 외부 컨트롤은 CustomerName
과 같은 더 구체적인 용도로 사용합니다.
올바른 방법입니다. 프록시 속성은 DependencyProperty가 아니므로 적절한 바인딩 동작을 제공하지 않습니다. – AndyM
종속성 속성 업데이트는 DependencyProperty의 일부로 정의 된 속성 메타 데이터를 통해 처리됩니다. (또한 기존의 드프 추가,하지만 그건 다른 주제의 수 있습니다.)
메타 데이터와 함께하는 DependencyProperty를 정의 콜백
public static readonly DependencyProperty MyValueProperty =
DependencyProperty.Register("MyValue", typeof(object), typeof(MyControl),
new UIPropertyMetadata(null, new PropertyChangedCallback(MyValue_PropertyChanged)));
그런 다음 구현합니다
private static void MyValue_PropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
MyControl c = (MyControl)d;
c.DoSomething();
}
그냥 아무튼 어떤 오류 ' T는 작품 ... 내가 두 속성에 메타 데이터를 정의해야합니다. –