2012-09-29 4 views
1

개체에서 작동하지만 두 번째 개체의 영향을받는 동작을 구현하려고합니다.다른 컨트롤을 속성으로 참조하는 블렌드/wpf 연결 동작을 어떻게 구현합니까?

예를 들어 다른 프레임 워크 요소의 거리를 기반으로 프레임 워크 요소의 모양이 변경됩니다.

나는 위험에 부착 된 행동에 대해 충분히 알고, 나는이 같은 내 클래스를 정의 할 것이다 : 나는 이름 (가리 것이다 종속성 속성을 필요 행동에

public class ChangeWithDistance : Behavior<FrameworkElement> 

그리고 어딘가?).

이 동작이 다른 컨트롤을 가리킬 수 있도록 내 종속성 속성을 만들어야하는 클래스는 무엇입니까?

propdp를 다른 컨트롤의 이름을 나타내는 문자열로 지정하겠습니까?

아니면 그는 컨트롤과 관련된 태그 의미 사용해야하는 다른 클래스가 (당신이 알고있는, 즉 X : 이름 사업 ..)

또는

는 propdp이 같은 프레임 워크의 요소를 가리키는해야 하는가?

public static readonly DependencyProperty OtherControl =  
      DependencyProperty.Register("OtherControl", typeof(FrameworkElement) 

아니면 바인딩으로 무엇을해야합니까?

동작을 가리키는 방법이나 다른 컨트롤에서 종속성 속성이있는 것이 가장 좋습니다.

블렌드를 사용하는 사용자가 다른 컨트롤을 선택할 수 있도록 표시하는 방법이 있습니까?

답변

2

내가 좋은 같은 내 종속성 속성을 선언 운 데 : 나는 부착 된 것을 이해

<Rectangle ....> 
     <Interactivity:Interaction.Behaviors> 
      <Controls:MyBehavior OtherObject="{Binding ElementName=TheOtherElementNameIWantToReference}" /> 
     </Interactivity:Interaction.Behaviors> 
    </Rectangle>     
+0

ChangeWithDistance : Behavior 는 dependencyObject를 구현하지 않으므로 XAML 오류가 발생합니다. "A 'Binding'은 DependencyObject의 DependencyProperty에만 설정할 수 있습니다." – rolls

0

많은 질문이 있습니다. 첨부 된 속성을 읽어보십시오. http://msdn.microsoft.com/en-us/library/ms749011.aspx

Register이 아닌 RegisterAttached 메서드를 사용해야한다는 간단한 대답이 있습니다.

+0

다음 XAML에 다음

public static readonly DependencyProperty OtherObjectProperty = DependencyProperty.Register("OtherObject", typeof (FrameworkElement), typeof (MyBehavior), new UIPropertyMetadata()); 

와 나는이 같은 관심이 다른 객체에 바인딩 속성 (제 생각에는.) 개체 A에 속성을 연결하는 데 문제가 없습니다. 내 문제는 XAML에서 연결된 속성 (A에)도 개체 B에 대해 알고 있음을 지정하려는 것입니다. 이름으로? 문자열로? 바인딩을 전달함으로써? 따라서 제 질문은 "속성을 사용하여 다른 객체를 어떻게 참조합니까?" –

+0

@JeremyWhite 내가 연결된 속성을 오해 한 것으로 의심됩니다. 첨부 된 속성은 특히 한 객체가 다른 객체에 대해 알아야하는 경우에 사용됩니다. 예를 들어, 컨트롤을'Grid'에 넣으면 첨부 된'Grid.Row' 속성 (그리고'Grid.Column')이 있습니다. 컨트롤이 Grid에 포함되어 있지 않으면 XAML에서 이러한 속성을 사용할 수 없습니다. 이것은 귀하의 경우와 유사합니다. 컨트롤 (첫 번째 객체)의 동작은 격자 (두 번째 객체)의 영향을받습니다. – phoog

+0

@JeremyWhite는 첫 번째 여러 페이지는 첨부 된 속성 (및 'RegisterAttached')을 사용합니다. https://www.google.attach 속성은 연결된 속성 (예 : Grid) *을 정의하는 * 속성이 다른 유형 (예 : TextBlock)의 개체에 속성을 연결한다는 것을 의미합니다. 그렇다면 요소 이름에 대해 걱정할 필요가 없습니다. 연결된 속성 getter 및 setter의 시그니처에는 연결된 속성을 사용하는 개체를 가리키는 매개 변수가 포함됩니다. – phoog