2009-10-14 9 views
4

다른 컨트롤의 인스턴스에 바인딩하는 방법이 있습니까? 이런 식으로 뭔가 : 나는 DataContext를 설정하려고했습니다Silverlight에서 다른 컨트롤에 바인딩

<Button x:Name="Foo" Content="Foo" /> 
<local:CustomControl OtherControl="{Binding Foo}" /> 

은 "이"MainPage의 생성자에서 그러나 작동하지 않는 것입니다.

CustomControl는 다음과 같이 정의된다 :

class CustomControl 
{ 
    public FrameworkElement OtherControl { get; set; } 
} 

답변

7

당신이 일을하려고하지만 실버 라이트 3에서 당신의 속성에 바인딩하는 바인딩 요소를 사용할 수 있는지 확실하지 통제.

<Button x:Name="Foo" Content="Foo" /> 
<local:CustomControl x:Name="control" Property="{Binding Path=Content, ElementName=Foo}" /> 

코드에서 바인딩을 분석하여 그 요소를 얻을 수 있습니까?

control.GetBindingExpression (속성) .ParentBinding.Source

1

그것은 실버 라이트 2에서 불가능하다 :

실버 라이트 2가 다른 요소에 하나 개의 요소를 결합 할 수 없습니다. 대신 모든 바인딩은 데이터 개체에 대한 것입니다. (당신은 중간 객체를 사용하여이 문제를 해결받을 수 있지만 추가 불편은 거의 보람 을 의미한다.)

1
<Button x:Name="Foo" Content="Foo" /> 
<local:CustomControl x:Name="control" OtherControl="{Binding ElementName=Foo}" /> 
+0

그것은이 실버 라이트 2.0에서 작동하지 않았다 가능하지만, (아마도 아래와) 5.0이 확실히 바인딩에 관련하여 정답이다 다른 컨트롤의 인스턴스 –

관련 문제