我在组件加载前对checkbox的isChecked属性进行了绑定
public FileControl()
{
RelativeSource relativeSource = new RelativeSource();
relativeSource.Mode = RelativeSourceMode.FindAncestor;
relativeSource.AncestorType = typeof(FileControl);
Binding bind = new Binding() { RelativeSource=relativeSource };
checkBox.SetBinding(FileIsCheckedIsCheckedProperty,bind);
InitializeComponent();
}
自定义依赖项:
public Nullable<bool> FileIsChecked
{
get { return (Nullable<bool>)GetValue(FileIsCheckedIsCheckedProperty); }
set { SetValue(FileIsCheckedIsCheckedProperty, value); }
}
// Using a DependencyProperty as the backing store for ChcckBoxIsChecked. This enables animation, styling, binding, etc...
public static readonly DependencyProperty FileIsCheckedIsCheckedProperty =
DependencyProperty.Register("FileIsChecked", typeof(Nullable<bool>), typeof(FileControl), new FrameworkPropertyMetadata(false));
然后在mainwindow中运行出现错误:
CheckBox.FileIsChecked Nullable`1 找不到源: RelativeSource FindAncestor, AncestorType='FileOperator.FileControl', AncestorLevel='1'。
我在前台XAML绑定是没有问题的,可以正常访问:
<CheckBox Name="checkBox" IsChecked="{Binding IsChecked, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:FileControl}}}">
</CheckBox>