我知道有很多与我相似的问题,我想我已经尝试了所有可以找到的解决方案。我试图绑定到UserControl的DependecyProperty:
<local:Control x:Name="Control" Grid.Row="0"
PageNumber="{Binding MainPageNumber, Mode=TwoWay}"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
</local:Control>
这是我控件中的DependencyProperty:
public int PageNumber
{
get { return (int)GetValue(PageNumberProperty); }
set{ SetValue(PageNumberProperty, value); }
}
public static readonly DependencyProperty PageNumberProperty = DependencyProperty.Register(
"PageNumber",
typeof(int),
typeof(PageControl),
new FrameworkPropertyMetadata(default(int),
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
new PropertyChangedCallback(OnPropertyPageNumberChanged)
)
);
当我应用绑定时,永远不会调用OnPropertyPageNumberChanged。如果我在PageNumber中添加一个固定的整数,则会调用该回调,以证明DependecyProperty不是问题。
我尝试添加ElementName(ElementName = local:Control),我尝试添加RelativeParent,这是我在网上找到的每个想法的尝试,但它不起作用。我确保没有this.context = this;
我没有其他想法了。
更新:
PageNumber
在子控件内声明。MainPageNumber
在包含控件的父页面中声明。
public int MainPageNumber
{
get { return (int)GetValue(MainPageNumberProperty); }
set{ SetValue(MainPageNumberProperty, value); }
}
public static readonly DependencyProperty MainPageNumberProperty = DependencyProperty.Register(
"MainPageNumber",
typeof(int),
typeof(ParentControl),
new FrameworkPropertyMetadata(default(int),
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
new PropertyChangedCallback(OnPropertyMainPageNumberChanged)
)
);
只要您的控件的当前MainPageNumber
中定义了int
类型的DataContext
属性,您的绑定就应该起作用。
您的PageNumber
依赖项属性是绑定to的目标属性,并且您在XAML标记中定义的MainPageNumber
应该被视为源属性。