我的依赖属性有问题。好像它根本不想工作,我不知道为什么。这是我的依赖属性的代码:
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);
}
}
这是我分配我的依赖属性值的地方:
<ComputerControl:ComputersControl Canvas.Left="50" BorderBrush="Black" Background="Blue" Name="computerControl" CheckBoxColumnVisibility="Collapsed" />
以下是我尝试将其绑定到DataGrid
中的列的位置,以便我可以将该列设置为可见或折叠:
<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>
有人可以告诉我为什么它不起作用吗?我看到的每个例子看起来都与此完全相同,但我的工作不起作用......
答案 0 :(得分:1)
尝试Visibility="{Binding CheckBoxColumnVisibility ElementName=computerControl}"
这仅适用于SL3 +
答案 1 :(得分:1)
当我创建DependencyProperty来调用PropertyChangedCallback以便绑定到我的用户控件中的依赖项属性的值时,我必须使用DependencyPropertyMetaData。当然这仍然在代码中,但它确实有效。
答案 2 :(得分:0)
您可以在Silverlight 3中使用ElementName绑定。以下是可能有效的示例:
<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>