2010-01-22 5 views
0

J'ai un problème avec ma propriété de dépendance. Il semble qu'il ne veut pas travailler du tout, et je ne sais pas pourquoi. Voici le code pour ma propriété de dépendance:Quel est le problème avec mes propriétés de dépendance?

public static readonly DependencyProperty CheckBoxColumnVisibilityProperty = 
    DependencyProperty.Register("CheckBoxColumnVisibility", typeof(Visibility), typeof(ComputersControl), null); 

public Visibility CheckBoxColumnVisibility 
{ 
    get 
    { 
     return (Visibility)GetValue(CheckBoxColumnVisibilityProperty); 
    } 
    set 
    { 
     SetValue(CheckBoxColumnVisibilityProperty, value); 
    } 
} 

Voici où j'attribue la valeur de ma propriété de dépendance:

<ComputerControl:ComputersControl Canvas.Left="50" BorderBrush="Black" Background="Blue" Name="computerControl" CheckBoxColumnVisibility="Collapsed" /> 

est ici où je suis en train de le lier à une colonne dans une DataGrid de faire en sorte, je peux configurer cette colonne pour être visibles ou effondrées:

<Data:DataGrid.Columns> 
    <Data:DataGridTemplateColumn 
    x:Name="CheckBoxColumn" 
    Visibility="{Binding CheckBoxColumnVisibility}" 
    Header="Selected"> 
     <Data:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <CheckBox x:Name="DataGridCheckBox" 
      Click="DataGridCheckBox_Click" 
      IsChecked="{Binding IsSelected, Mode=TwoWay}" 
      HorizontalAlignment="Center" /> 
     </DataTemplate> 
     </Data:DataGridTemplateColumn.CellTemplate> 
    </Data:DataGridTemplateColumn> 

quelqu'un peut-il dire à mon pourquoi il ne fonctionne pas? Chaque exemple, je regarde regarde exactement la même chose que cela, mais le mien ne fonctionne pas ...

Répondre

1

Je dois utiliser le DependencyPropertyMetaData lorsque je crée un Depen dencyProperty pour appeler un PropertyChangedCallback afin de lier à la valeur de la propriété de dépendance dans mon contrôle utilisateur. Bien sûr, cela reste dans le code mais ça fonctionne.

1

essayer Visibility="{Binding CheckBoxColumnVisibility ElementName=computerControl}"

Cela ne fonctionne que sur SL3 +

+1

J'ai défini l'itemource pour la grille de données. à une liste de données. Y at-il de toute façon toujours lier la propriété CheckBoxVisibility à cette colonne dans le xaml ou suis-je coincé avec le faire dans le code? Je l'ai fait fonctionner mais j'ai dû définir la visibilité dans la méthode Loads des contrôles. – Brett

0

Vous pouvez utiliser ElementName obligatoire dans Silverlight 3. Ici est un exemple qui pourrait fonctionner:

<ComputerControl:ComputersControl Canvas.Left="50" BorderBrush="Black" Background="Blue" Name="computerControl" CheckBoxColumnVisibility="Collapsed" /> 

... 


<Data:DataGridTemplateColumn 
x:Name="CheckBoxColumn" 
Visibility="{Binding Path=CheckBoxColumnVisibility, ElementName=computerControl}" 
Header="Selected"> 
    <Data:DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <CheckBox x:Name="DataGridCheckBox" 
     Click="DataGridCheckBox_Click" 
     IsChecked="{Binding IsSelected, Mode=TwoWay}" 
     HorizontalAlignment="Center" /> 
    </DataTemplate> 
    </Data:DataGridTemplateColumn.CellTemplate> 

+0

En fait cela ne marche pas parce que le Datagrid est à l'intérieur de l'ordinateur ... – Brett