2011-08-05 5 views
0

어셈블리에 "Comment"속성을 갖는 "AssemblyX"클래스가 있습니다. AssemblyX.Comment를 다른 어셈블리의 TextBlock.Text에 바인딩하고 싶습니다.한 어셈블리의 속성을 다른 어셈블리의 다른 속성에 바인딩하는 방법

다음과 같은 방법으로 시도하고 있지만 작동하지 않습니다. 당신은 일반적으로 클래스의 속성에 바인딩하지 않는

<Window xmlns:cc="clr-namespace:SomeNamespace;assembly=AssemblyX"> 
<TextBlock Text={Binding cc:Comment}/> 
... 
+0

뒤에이

<MenuItem Header="{x:Static SomeClass.SomeProperty}"/> 

코드를 시도 클래스의 정적 속성에 바인딩 할 수 있습니다 : * AssemblyX에서 SomeClass.Comment를 바인딩하고 싶습니다. * – bitbonk

답변

5

, 당신은 클래스의 예를의 속성에 바인딩합니다. 당신이 인스턴스를 만들 것입니다 귀하의 코드 숨김 그렇게 :

SomeNamespace.SomeClass instance = new SomeClass(); 
instance.Comment = "bla"; 
this.DataContext = intstance; 

그리고 당신의 XAML에서

당신은 바인딩 :이 경우

<TextBlock Text="{Binding Comment}"/> 

이 절대적만큼, 선언 된 것을 조립 SomeClass에 문제가되지 않습니다 현재 프로젝트에서 해당 어셈블리를 참조합니다. SomeClass의 이름도 중요하지 않습니다. 중요한 것은 모두 바인딩하는 인스턴스에 Comment이라는 속성이 있다는 것입니다.

클래스의 속성은 정적이며, 따라서 인스턴스가없는 경우,이 같은 정적 속성에 바인딩 할 수 있습니다 : 클래스는 정적이 아닌 경우

<TextBlock Text="{Binding cc:SomeClass.Comment}"/> 
+0

이 작동했습니다. 덕분에 – John

+0

그것은 훌륭했다. 이 대답에 감사드립니다. – AgentFire

0

, 당신은 만들어야합니다 귀하의 클래스에 대한 인스턴스. 속성에 바인딩 할 수 있습니다.

보기 here 어쩌면 당신이

0

(아마도 정적 명령) 당신은 아마 의미

public class SomeClass 
{ 
    public static string SomePropety 
    { get { return "done"; } } 
} 
관련 문제