C# 检测在用户控件内更改的绑定属性

C# 检测在用户控件内更改的绑定属性,c#,xaml,binding,user-controls,propertychanged,C#,Xaml,Binding,User Controls,Propertychanged,我正在开发一个Windows应用商店应用程序,其中flipview中有一个用户控件作为数据模板 用户控件:(ImagePage.xaml) 除了ContextContent1Changed没有启动外,一切正常!因此,我不知道这是否是正确的方法,但基本上我只想根据输入到用户控件中的数据绑定打开或关闭用户控件中的UI元素。文本块没有数据上下文来查找依赖属性。如果在ImagePage.xaml中为网格提供名称: <Grid Background="#FFF0F0F0" Margin="4

我正在开发一个Windows应用商店应用程序,其中flipview中有一个用户控件作为数据模板

用户控件:(ImagePage.xaml)


除了ContextContent1Changed没有启动外,一切正常!因此,我不知道这是否是正确的方法,但基本上我只想根据输入到用户控件中的数据绑定打开或关闭用户控件中的UI元素。

文本块没有数据上下文来查找
依赖属性。如果在ImagePage.xaml中为网格提供名称:

    <Grid Background="#FFF0F0F0" Margin="4,0" x:Name="MyGrid">
它告诉
网格
(及其Decedents)在
ImagePage
类上查找依赖项属性。这样,依赖项属性应该得到正确绑定。不过,另一个问题是,您告诉
DependencyProperty
它位于
ImagePage
typeof(ImagePage)
上,但随后将其强制转换到StackPanel,每次都会失败:

    StackPanel stackPanel = (StackPanel)d; // Throws System.InvalidCastException

您可以通过为StackPanel命名并直接在.cs文件中引用它来解决此问题。

谢谢@Thanatos,抱歉,但可能我不清楚我遇到的问题,我可以很好地解决UI元素(我的缺点是我没有显示整个ImagePage类,我实际上在那里声明了我的DataContext)但我遇到的问题是,当呈现页面并输入绑定数据时,永远不会调用“OnTextContent1Changed”。我的“OnTextContent1Changed”方法中有一个Debug.WriteLine,但从未调用过它。是否在传入绑定数据之前或之后设置DataContext?如果要在呈现页面后的某个时间点更改属性,是否调用了“OnTextContent1Changed”?我还会尝试在TextContent1的get/set块中放置断点或调试语句,并确保它们正确触发。感谢@Thanatos,最后我只是通过检查命名textblocks上的值是否为空或是否为已加载来稍微更改了我的结构,这是一个我以前想不到的简单修复方法,我想我对文本块绑定的想法太着迷了。
    <Grid Background="#FFF0F0F0" Margin="4,0" x:Name="MyGrid">
    public ImagePage()
    {
        InitializeComponent();

        MyGrid.DataContext = this;
    }
    StackPanel stackPanel = (StackPanel)d; // Throws System.InvalidCastException