用户控件的子依赖对象上的绑定不起作用

2023-11-30

我正在尝试让绑定在用户控件的子对象上工作。 Xaml 看起来像这样:

<MyGrid>
    <MyColumn ExtendedColumnData="{Binding ColumnToolTipDescriptions}"/>
</MyGrid>

以下是类的定义方式:

[ContentProperty("Columns")]
public class MyGrid : UserControl
{
    private MyColumnCollection _columns;

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("Data")]
    public MyColumnCollection Columns
    {
        get
        {
            if (_columns == null)
                _columns = new MyColumnCollection();

            return _columns;
        }
    }
}

public class MyColumnCollection : ObservableCollection<MyGridColumn>
{
}

public class MyGridColumn : DependencyObject
{
    public object ExtendedColumnData
    {
        get { return (object)GetValue(ExtendedColumnDataProperty); }
        set { SetValue(ExtendedColumnDataProperty, value); }
    }

    public static readonly DependencyProperty ExtendedColumnDataProperty =
        DependencyProperty.Register("ExtendedColumnData", typeof(object), typeof(MyGridColumn), new UIPropertyMetadata(null));
}

据我所知,绑定甚至没有尝试获取数据,因为我尝试在绑定上放置转换器,并且 Convert 方法上的断点永远不会被命中。

我正在使用 MVVM 模式,因此窗口的DataContext属性设置为视图模型。

我在这里阅读了一些其他问题,并尝试了绑定的各种排列,例如:

<MyColumn ExtendedColumnData="{Binding DataContext.ColumnToolTipDescriptions, ElementName=MyViewName}" />
<MyColumn ExtendedColumnData="{Binding DataContext.ColumnToolTipDescriptions, RelativeSource={RelativeSource AncestorType={x:Type local:MyView}}" />

但还是没有运气,绑定没有触发!烦人的是,这似乎工作正常(如果我将属性添加到网格中):

<MyGrid ExtendedColumnData="{Binding ColumnToolTipDescriptions}">
    <MyColumn />
</MyGrid>

我对 WPF 没有那么丰富的经验,所以我确定我错过了一些东西?


问题是MyColumnCollection不继承数据上下文(控件的通常属性不是继承上下文的一部分)。如果没有数据上下文绑定将不起作用。

要解决这个问题,请尝试继承MyColumnCollection不是来自ObservableCollection,但是从FreezableCollection(可冻结属性是继承上下文的一部分)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用户控件的子依赖对象上的绑定不起作用 的相关文章

随机推荐

  • 使用未分配的局部变量

    我在编写从十六进制到二进制 十进制到二进制等的转换器时遇到问题 这是我的代码 当我调试它时 我遇到了错误 使用未分配的局部变量 Dec Int10 你可以帮帮我吗 我该如何修复这个错误 protected void Button Click
  • PYQT5 线程与计划和计时器的问题

    我在用PYQT5构建一个 GUI 我正在使用APScheduler管理我想要运行的工作 我将调度程序项目和计时器项目分解为自己的类 然后将它们连接到主文件中 我遇到的问题是一旦计时器完成一个周期 我尝试添加时间Timer类并在调度程序再次运
  • 返回具有最高值的变量?

    我有 3 个变量 num1 num2 和 num3 每个代表表列所具有的行数 我想找到哪个变量具有最高的变量 这样我就可以在for循环 如下所示 for row 1 row lt HIGHEST VARIABLE row 这可能已经得到解答
  • 提高axios获取下载速度

    我在用axios从 Azure 存储 Blob 下载文件 100MB axios method get url uri onDownloadProgress progressEvent gt console log Loaded progr
  • 使用tensorflow作为存储库构建基于tensorflow的android应用程序

    这就像来自的后续问题使用 Tensorflow 构建 Android 应用 我想将 android 示例项目与tensorflow git repo 分开 并能够使用tensorflow 作为依赖项单独构建它 这是我的文件夹结构 my pr
  • HTML5 Iframe:阻止远程请求

    我正在使用 srcdoc 属性将 HTML 内容加载到 iframe 中 iframe 是一个沙盒 iframe 没有授予任何权限 因此 iframe 中的所有 Javascript 都会被阻止 但是 远程请求 例如 CSS 图像等 仍然会
  • 如何使用 scanf 验证输入

    如何使用 scanf 验证用户输入 现在我有类似的东西 但不起作用 注意 我有 atoi 只是为了验证 scanf 验证是否有效 scanf 0987654321 s buf i atoi buf if i index i Using sc
  • 序列化为 JSON,属性名称中带有括号

    我正在使用 paypal api 来做一些付款的事情 如果我看设置快速结账某些字段的形式为PAYMENTREQUEST n AMT 这对我来说很好 因为我有一个像这样的请求类 public class SetExpressCheckoutR
  • Google Drive Realtime API OAuth2 刷新错误(第 3 部分)

    在笔记本电脑 手机从睡眠 待机状态恢复后 我在实时 API 正确重新连接方面遇到了一些问题 API 正确检测到它需要刷新 OAuth 令牌并引发错误 但是刷新令牌后 实时 API 无法正确重新连接到远程服务 这有点类似于 Part 2 但这
  • 使用 C 外部指针的 R 内存泄漏

    我试图在包中使用外部指针 但遇到了一个问题 似乎终结器没有被调用并且内存泄漏 下面是这个问题的一个极其人为的例子 include
  • 如何根据自定义规则对Excel项目进行分组?

    我有一组数据 网站管理员工具搜索查询 位于 Excel 中 具有以下标题 Query Impressions Clicks Date 谷歌电子表格示例here 我想添加一个名为的额外列Category并根据将在 A 列上搜索字符串的自定义规
  • 如何在动态数据透视表上显示最小值和最大值

    我从 dt table 连接与 dt k 创建了一个数据透视表 table dt k id k name k ott 1 item 1 ss 2 item 2 ss 3 item 3 ww 4 item 4 dd 5 item 5 asa
  • jQuery悬停功能超时

    我目前正在使用下面的代码 使用 jQuery 和悬停函数在用户将鼠标悬停在图像上时淡入 标题 元素 这在桌面浏览器上完美运行 但是当使用 iPad 等移动触摸设备进行测试时 需要用户点击图像来触发悬停功能 标题会按预期淡入 但保持活动状态
  • 将大字符串值设置为 CLOB 时抛出“PLS-00172:字符串文字太长”错误

    我有一个包含 CLOB 字段的存储过程 当我调用具有较大值 超过 33K 个字符 的存储过程时 出现错误 PLS 00172 字符串文字太长 我的存储过程 create or replace procedure P c clob is be
  • 如何在 Cloud Firestore 中使用文档 ID 执行集合组查询

    几天前 我将我的应用程序帖子从实时数据库移至云 Firestore 因为 Firestore 显然具有更灵活的查询 我一直在修改我的代码以使用 firestore 作为新数据库 现在我遇到了一个问题 如何检索 帖子 集合中具有包含特定命名文
  • 如何序列化控件

    我们有一个应用程序 其中包含 xml 文件形式的数据库 它具有客户端服务器架构 所以这里服务器将使用dataset从xml文件中读取数据并将其存储在xml模式中 然后服务器将序列化数据并将其传递给 UI 客户端 因此 UI 数据通过使用左侧
  • 如何使用 Ansible 在远程服务器上执行 shell 脚本?

    我计划使用 Ansible playbook 在远程服务器上执行 shell 脚本 空白test sh文件 touch test sh 剧本 name Transfer and execute a script hosts server u
  • Ember JS:如何导入 Material 组件 Web JS

    我正在尝试将 Material Components Web MDC Web 与 EmberJS 应用程序一起使用 我已经安装了material components web与纱线 yarn add material components
  • 贝宝创建定期配置文件,显示下一个付款日期与配置文件开始日期相同

    创建的定期贝宝配置文件显示的下一个付款日期与配置文件开始日期相同 我认为它应该显示到下个月的下一个付款日期 以下是我发送以创建配置文件的数组格式 Array 0 gt 1 gt AMT 9 99 2 gt CREDITCARDTYPE Vi
  • 用户控件的子依赖对象上的绑定不起作用

    我正在尝试让绑定在用户控件的子对象上工作 Xaml 看起来像这样