WPF 控件嵌套属性数据绑定

2023-11-30

我正在尝试使用一些嵌套属性来开发用户控件,这些属性允许使用数据绑定来设置它。例如,我有这样的事情:

// Top level control
public class MyControl : Control
{
    public string TopLevelTestProperty
    {
        get { return (string)GetValue(TopLevelTestPropertyProperty); }
        set { SetValue(TopLevelTestPropertyProperty, value); }
    }

    public static readonly DependencyProperty TopLevelTestPropertyProperty =
        DependencyProperty.Register("TopLevelTestProperty", typeof(string), typeof   
           (MyControl), new UIPropertyMetadata(""));

    // This property contains nested object
    public MyNestedType NestedObject
    {
        get { return (MyNestedType)GetValue(NestedObjectProperty); }
        set { SetValue(NestedObjectProperty, value); }
    }

    public static readonly DependencyProperty NestedObjectProperty =
        DependencyProperty.Register("NestedObject", typeof(MyNestedType), typeof 
            (MyControl), new UIPropertyMetadata(null));
}

// Nested object's type
public class MyNestedType : DependencyObject
{
    public string NestedTestProperty
    {
        get { return (string)GetValue(NestedTestPropertyProperty); }
        set { SetValue(NestedTestPropertyProperty, value); }
    }

    public static readonly DependencyProperty NestedTestPropertyProperty =
        DependencyProperty.Register("NestedTestProperty", typeof(string), typeof
            (MyNestedType), new UIPropertyMetadata(""));
}

// Sample data context
public class TestDataContext
{
    public string Value
    {
        get
        {
            return "TEST VALUE!!!";
        }
    }
}
...
this.DataContext = new TestDataContext();
...

XAML:

      <local:mycontrol x:name="myControl" topleveltestproperty="{Binding Value}" >
         <local:mycontrol.nestedobject>
            <local:mynestedtype x:name="myNestedControl" nestedtestproperty="{Binding Value}" />
         </local:mycontrol.nestedobject>
      </local:mycontrol>

它适用于属性 TopLevelTestProperty,但不适用于 NestedTestProperty。 看来嵌套绑定不起作用。有人可以帮我吗?有什么办法可以进行这样的绑定吗? 我认为发生这种情况是因为我的嵌套对象没有任何对顶级对象的引用,因此无法使用 MyControl 的 DataContext 来解析它。


H.B.对,嵌套控件不继承 DataContextmycontrol。 尝试明确设置它:

<local:mycontrol x:name="myControl" 
                 topleveltestproperty="{Binding Value}" >          
   <local:mycontrol.nestedobject>             
           <local:mynestedtype x:name="myNestedControl" 
                               DataContext="{Binding ElementName=myControl,
                                                     Path=DataContext}"
                               nestedtestproperty="{Binding Value}" />          
  </local:mycontrol.nestedobject>       
</local:mycontrol> 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 控件嵌套属性数据绑定 的相关文章

  • 使用 ADAL v3 使用 ClientID 对 Dynamics 365 进行身份验证

    我正在尝试对我们的在线 Dynamics CRM 进行身份验证以使用可用的 API 我能找到的唯一关于执行此操作的官方文档是 https learn microsoft com en us dynamics365 customer enga
  • 关于逻辑/算法的想法以及如何防止线程写入 Sql Server 中的竞争

    我有以下逻辑 public void InQueueTable DataTable Table int incomingRows Table Rows Count if incomingRows gt RowsThreshold async
  • 在 C 语言中,为什么数组的地址等于它的值?

    在下面的代码中 指针值和指针地址与预期不同 但数组值和地址则不然 怎么会这样 Output my array 0022FF00 my array 0022FF00 pointer to array 0022FF00 pointer to a
  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • 在 C++ 代码中转换字符串

    我正在学习 C 并开发一个项目来练习 但现在我想在代码中转换一个变量 字符串 就像这样 用户有一个包含 C 代码的文件 但我希望我的程序读取该文件并插入将其写入代码中 如下所示 include
  • Selenium - C# - Webdriver - 无法找到元素

    在 C 中使用 selenium 我试图打开浏览器 导航到 Google 并找到文本搜索字段 我尝试下面的 IWebDriver driver new InternetExplorerDriver C driver Navigate GoT
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • 调整屏幕和字体设置的 WPF 应用程序(或者,我如何将 DLU 与 WPF 中的单元相关联?)

    在MFC中 对话框的设计使用DLUs http msdn microsoft com en us library bb847924 aspx 在 WPF 中 我们以 1 96 英寸为单位指定 虽然这确实会缩放窗口和视觉元素 但我们如何使 W
  • TextBlock TextWrapping 不换行 #2

    好吧 那么this https stackoverflow com questions 6625177 textblock textwrapping not wrapping解决方案没有帮助 XAML 在这里
  • wordexp 失败时我们需要调用 wordfree 吗?

    wordexp 失败时我们需要调用 wordfree 吗 在某些情况下 调用 wordfree 似乎会出现段错误 例如 当 wordfree 返回字符串为 foo bar 的错误代码时 这在手册页中并不清楚 我已经看到在某些错误情况下使用了
  • 如何在多线程应用程序中安全地填充数据并 Refresh() DataGridView?

    我的应用程序有一个 DataGridView 对象和一个 MousePos 类型的列表 MousePos 是一个自定义类 它保存鼠标 X Y 坐标 类型为 Point 和该位置的运行计数 我有一个线程 System Timers Timer
  • 使用 gcc 时在头文件中查找定义的好方法是什么?

    在使用 gcc 时 有人有推荐的方法在头文件中查找定义吗 使用 MSVC 时 我只需右键单击并选择 转到定义 这非常好 我使用过 netbeans gcc 它确实有代码帮助 包括到定义的超链接 所以这是一种选择 但是 我想知道是否有任何其他
  • 如何在C#中控制datagridview光标移动

    我希望 datagridview 光标向右移动到下一列 而不是在向单元格输入数据后移动到下一行 我试图通过 dataGridView1 KeyDown 事件捕获键来控制光标 但这并不能阻止光标在将数据输入到单元格后移动到下一行 提前感谢你的
  • 构建 C# MVC 5 站点时项目之间的处理器架构不匹配

    我收到的错误如下 2017 年 4 月 20 日构建 13 23 38 C Windows Microsoft NET Framework v4 0 30319 Microsoft Common targets 1605 5 警告 MSB3
  • 如何编写一个接受 int 或 float 的 C 函数?

    我想用 C 语言创建一个扩展 Python 的函数 该函数可以接受 float 或 int 类型的输入 所以基本上 我想要f 5 and f 5 5 成为可接受的输入 我认为我不能使用if PyArg ParseTuple args i v
  • 如何高效计算连续数的数字积?

    我正在尝试计算数字序列中每个数字的数字乘积 例如 21 22 23 98 99 将会 2 4 6 72 81 为了降低复杂性 我只会考虑 连续的数字 http simple wikipedia org wiki Consecutive in
  • 如何从 Windows Phone 7 模拟器获取数据

    我有一个 WP7 的单元测试框架 它在手机上运行 结果相当难以阅读 因此我将它们写入 XDocument 我的问题是 如何才能将这个 XML 文件从手机上移到我的桌面上 以便我可以实际分析结果 到目前为止 我所做的是将 Debugger B
  • 声明一个负长度的数组

    当创建负长度数组时 C 中会发生什么 例如 int n 35 int testArray n for int i 0 i lt 10 i testArray i i 1 这段代码将编译 并且启用 Wall 时不会出现警告 并且似乎您可以分配
  • 如果找不到指定的图像文件,显示默认图像的最佳方式?

    我有一个普通的电子商务应用程序 我将 ITEM IMAGE NAME 存储在数据库中 有时经理会拼错图像名称 为了避免 丢失图像 IE 中的红色 X 每次显示产品列表时 我都会检查服务器中是否有与该产品相关的图像 如果该文件不存在 我会将其
  • 如何为有时异步的操作创建和实现接口

    假设我有数百个类 它们使用 计算 方法实现公共接口 一些类将执行异步 例如读取文件 而实现相同接口的其他类将执行同步代码 例如将两个数字相加 为了维护和性能 对此进行编码的好方法是什么 到目前为止我读到的帖子总是建议将异步 等待方法冒泡给调

随机推荐

  • 通过Windows批处理文件读取csv文件并创建txt文件

    我有一个 Excel 文件 每行有 5 个值 现在 我想通过批处理文件读取 csv 文件并使用文件中的内容创建文本文件 例如 如果我的 csv 文件 在一列中 中有 Apple Mango 则批处理文件应读取此 csv 文件 并应创建一个文
  • Android 模拟器无法访问互联网,共享互联网连接

    我已经安装了 Eclipse Juno 并将 ADT 也更新到 22 0 我创建了一个 Android 2 3 版本的自定义 AVD 工作正常 但我的模拟器上似乎没有互联网连接 注意 标题栏上还会显示 3G 符号 看看下面给出的我的模拟器的
  • 检测 Python 海龟游戏中的碰撞

    我正在尝试制作一个红海龟追逐蓝海龟的Python游戏 当红海龟抓住蓝海龟时 我希望它在屏幕上显示 碰撞 但它不起作用 当它碰撞时 什么也没有发生 它给我一个错误 Turtle 对象不可调用 from turtle import Turtle
  • 如何使用android.drm框架

    我正在开发一个基于 DRM 的 Android 应用程序 应用程序旨在在下载并获得对文件 音频 视频 的控制访问权限后对 音频 视频 文件进行加密 防止文件 音频 视频 复制和粘贴并使文档过期 从而无法再查看它们 为此我使用 android
  • ASP.NET 计时器事件

    protected void SubmitButtonClicked object sender EventArgs e System Timers Timer timer new System Timers Timer line 1 ge
  • JUnit 如何查找测试?

    我假设 JUnit 找到了测试 在派生自的类中 junit framework TestCase 通过寻找带有注释的方法 Test 但是 我已经包含了一个测试http 256stuff com sources jenkins hash ja
  • 如何根据列名称对数据框进行子集化?

    我有这个数据框 dput df structure list Server structure c 1L 1L 1L 1L 1L 1L Label servera class factor Date structure 1 6 Label
  • 创建位图图像 WPF

    我有一个包含需要在屏幕上显示的图像数据的 ushort 目前我正在创建一个 Windows System Drawing Bitmap 并将其转换为 BitmapImage 但这感觉像是一种缓慢而无效的方法 有人知道创建 ushort 的
  • facet_wrap 每个面板的轴相等

    我想用facet wrap每个面板的轴可能不同 但在一个面板内x and y轴应该具有相同的比例 例如看下面的图 df lt read table text x y g 1 5 a 2 6 a 3 7 a 4 8 a 5 9 b 6 10
  • Access - 比较两个表并更新或插入第一个表中的数据

    在我的 Access 数据库中 我有两个表 Table1 PersNum Name Surname 2321 Lenora Springer 2320 Donya Gugino 3326 Leland Wittmer 4588 Elmer
  • 如何使用QML/QtLocation模块在地图上显示大量离线数据?

    我正在使用 QML 及其新的 QtLocation 模块 gt Qt5 4 创建离线 Slippy Map 我很容易地用离线缓存来显示图块 现在我想向此地图添加自定义数据 约 7000 个机场的列表 这个巨大的列表必须根据缩放级别进行聚类
  • 当控制器实例化 Web API DI 中接口的正确实现时,“魔法”发生在哪里?

    在我看来 当涉及到 Web API 控制器中的 DI 时 就像是从帽子里变出兔子一样 我明白了 0 Web API项目中的Controller可以通过各种需要实例化的类来调用 所有的类都实现了Controller所依赖的接口 例如 使用以下
  • 选中的复选框将在分页中保留

    我正在做一个 php 脚本 其中我需要记住选中的复选框并将其保存到所有数据库中 不幸的是 我的代码仅保存我选中复选框的当前页面 但另一个复选框未选中 示例 在第 1 页中 我检查了 3 个项目 在第二页上 我检查了项目 当我单击提交按钮时
  • 将地理坐标从度数转换为十进制

    我想将我的地理坐标从度数转换为小数 我的数据如下 lat long 105252 30 25 264 9 01 331 105253 30 39 237 8 10 811 105255 31 37 760 8 06 040 105258 3
  • Ruby gets() 未返回正确的字符串[重复]

    这个问题在这里已经有答案了 在听到 Ruby 的所有优点后 我今天决定尝试一下 Ruby 但到目前为止 它只是给我带来了困难 很久以前 我在学习 Python 时制作了一个 搜索引擎 它只是将数据存储在数组中并检查搜索关键字是否在其中 并且
  • Flask App:函数运行时更新进度条

    我正在 Flask 中构建一个相当简单的 Web 应用程序 它通过网站的 API 执行功能 我的用户使用他们的帐户 URL 和 API 令牌填写表单 当他们提交表单时 我有一个 python 脚本 可以通过 API 从他们的帐户导出 PDF
  • 在数组中的每个元素之间使用 MATLAB linspace

    使用 MATLAB 我想在数组中的每个点之间进行线性插值 Using interpolate将以非线性方式完成 我想做的类似于生成低通滤波器系数 我已经想出了一个解决方案 但我想避免使用for loops a 0 0 1 0 0 Input
  • 身份验证后,flask-login 会随机使会话失效

    我正在使用烧瓶登录https flask login readthedocs io en latest用于会话管理 用户首先登录 login html 应用程序并转到 home html 但是 当用户通过身份验证并单击不同的链接后 它将踢出
  • 如何在字符串数组中搜索字符串

    在其他帖子中寻找答案后 我觉得我必须问这个问题 我在看JavaScript 中如何检查数组是否包含对象 and 查找某个项目是否在 JavaScript 数组中的最佳方法 并且无法让代码在那里工作 我正在将 html 嵌入代码捕获到数组中
  • WPF 控件嵌套属性数据绑定

    我正在尝试使用一些嵌套属性来开发用户控件 这些属性允许使用数据绑定来设置它 例如 我有这样的事情 Top level control public class MyControl Control public string TopLevel