2011-08-05 9 views
0

J'ai une classe dans l'assembly "AssemblyX" avec la propriété "Comment". Je veux lier AssemblyX.Comment à TextBlock.Text dans un autre assembly? J'essaye de le faire de la manière suivante mais cela ne fonctionne pas.Comment lier une propriété dans un assemblage à une autre propriété dans un autre assemblage

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

Vous vouliez probablement dire: * Je veux lier SomeClass.Comment dans AssemblyX * – bitbonk

Répondre

5

Généralement, vous ne se lient pas à une propriété d'une classe, vous lier à une propriété d'un exemple d'une classe. Donc, dans votre codebehind vous souhaitez créer une instance:

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

Et dans votre XAML vous lier:

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

Dans ce cas, il ne fait absolument pas d'importance dans ce que l'assemblage SomeClass est déclaré, tant que votre projet actuel fait référence à cet assembly. Peu importe ce que SomeClass est nommé. Tout ce qui compte est que l'instance que vous liez a une propriété nommée Comment.

Si la propriété de votre classe est statique et vous ne donc pas une instance, vous pouvez lier à la propriété statique comme ceci:

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

cela a fonctionné. merci – John

+0

C'était génial. J'apprécie cette réponse. – AgentFire

0

si votre classe n'est pas statique, vous devez créer une instance pour votre classe. alors vous pouvez lier à une propriété.

regard here peut-être vous aide à

0

Pour se lier à une propriété statique d'une classe (commande statique peut-être) essayer

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

code derrière

public class SomeClass 
{ 
    public static string SomePropety 
    { get { return "done"; } } 
} 
Questions connexes