2009-07-29 4 views
9

Ich habe die Anforderung, den Verweis der Steuerung an ein anderes benutzerdefiniertes Steuerelement zu übergeben. Ich habe eine individuelle Steuerung, die eine Abhängigkeitseigenschaft enthält associateDatagridPropertySo übergeben Sie den Verweis eines Steuerelements an ein anderes Steuerelement in XAML

public static readonly DependencyProperty 
     AssociatedDataGridProperty = DependencyProperty.Register(
      "AssociatedDatagrid", 
      typeof(DataGrid), 
      typeof(CustomControl), 
      new FrameworkPropertyMetadata(null, 
       FrameworkPropertyMetadataOptions.BindsTwoWayByDefault) 
      ); 

    public Datagrid AssociatedDatagrid 
    { 
     get { return (Datagrid)base.GetValue(AssociatedDataGridProperty); } 
     set { base.SetValue(AssociatedDataGridProperty, value); } 
    } 

Im XAML ich Wert wie diese

<Datagrid x:name=ClientGrid /> 

Hier Datagrid ist Microsoft WPF Toolkit Datagrid bin Zuweisung

<CustomControl x:Name="DatagridPaging" 
       Canvas.Left="24"  
       Canvas.Top="236" 
       AssociatedDatagrid="{Binding ElementName=clientsGrid ,Path=Name}"> 

Wenn ich versuche, auf den Wert der AssociatedDatagrid-Eigenschaft zuzugreifen, wird immer null

0 angezeigt

Kann mir jemand den richtigen Weg sagen?

Antwort

1

Sie brauchen Path=Name in Ihrem Binding nicht. Was Sie hier stattdessen tun, ist die Übergabe des Wertes der Name Eigenschaft der DataGrid. Hier

+0

Anstatt eine andere Antwort zu posten (da stimme ich zu), füge ich hier nur eine Notiz hinzu, falls es noch Verwirrung gibt. Vor allem hinter den Kulissen versucht Binding Folgendes zu tun: AssociatedDatagrid = (clientsGrid.Name als Datagrid); , die auf null kommen wird. –

+0

Dem stimme ich zu, +1. –

14

ist der Code:

erste Element, das in der zweiten verwiesen wird:

<Label x:Name="aGivenNameLabel" Content="kikou lol"/> 

Das zweite Element:

<ContentControl Content={Binding ElementName=aGivenNameLabel}" /> 

Viel Glück!

+1

danke jmix, ich habe perfekte Antwort, was ich will. – Gate

Verwandte Themen