如何绑定到 Style.Resource 中的附加属性?

2023-12-27

我正在尝试使用附加属性在 TextBox 的背景中创建提示文本标签,但无法解析样式资源中文本标题的绑定:

风格定义:

<Style x:Key="CueBannerTextBoxStyle"
       TargetType="TextBox">
  <Style.Resources>
    <VisualBrush x:Key="CueBannerBrush"
                 AlignmentX="Left"
                 AlignmentY="Center"
                 Stretch="None">
      <VisualBrush.Visual>
        <Label Content="{Binding Path=(EnhancedControls:CueBannerTextBox.Caption), RelativeSource={RelativeSource AncestorType={x:Type TextBox}}}"
               Foreground="LightGray"
               Background="White"
               Width="200" />
      </VisualBrush.Visual>
    </VisualBrush>
  </Style.Resources>
  <Style.Triggers>
    <Trigger Property="Text"
             Value="{x:Static sys:String.Empty}">
      <Setter Property="Background"
              Value="{DynamicResource CueBannerBrush}" />
    </Trigger>
    <Trigger Property="Text"
             Value="{x:Null}">
      <Setter Property="Background"
              Value="{DynamicResource CueBannerBrush}" />
    </Trigger>
    <Trigger Property="IsKeyboardFocused"
             Value="True">
      <Setter Property="Background"
              Value="White" />
    </Trigger>
  </Style.Triggers>
</Style>

附属财产:

    public class CueBannerTextBox
{
    public static String GetCaption(DependencyObject obj)
    {
        return (String)obj.GetValue(CaptionProperty);
    }

    public static void SetCaption(DependencyObject obj, String value)
    {
        obj.SetValue(CaptionProperty, value);
    }

    public static readonly DependencyProperty CaptionProperty =
        DependencyProperty.RegisterAttached("Caption", typeof(String), typeof(CueBannerTextBox), new UIPropertyMetadata(null));
}

Usage:

<TextBox x:Name="txtProductInterfaceStorageId" 
                 EnhancedControls:CueBannerTextBox.Caption="myCustomCaption"
                 Width="200" 
                 Margin="5" 
                 Style="{StaticResource CueBannerTextBoxStyle}" />

这个想法是,您可以在创建文本框时定义视觉画笔中使用的文本提示,但我收到绑定错误:

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.TextBox', AncestorLevel='1''. BindingExpression:Path=(0); DataItem=null; target element is 'Label' (Name=''); target property is 'Content' (type 'Object')

如果我只是在样式中对 Label.Content 属性进行硬编码,则代码可以正常工作。

有任何想法吗?


这里的问题与方式有关Style作品:基本上是一个“副本”Style将被创建(在第一次引用时),此时,可能有多个TextBox控制你想要这个Style应用于 - 它将使用哪一个作为相对源?

(可能的)答案是使用Template代替Style- 使用控件或数据模板,您将能够访问可视化树TemplatedParent,这应该能让你到达你需要去的地方。

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

如何绑定到 Style.Resource 中的附加属性? 的相关文章

随机推荐

  • 获取curl php中最后一个重定向的url

    大家好 我知道这是 StackOverFlow 上一个非常常见的话题 我已经花了整整一周的时间来寻找它 我有一个网址 abc com default asp strSearch 19875379 这进一步重定向到此网址 abc com de
  • 在 AngularJS 中观察外部变量?

    我已经为 Chrome 应用程序中的串行通信编写了一个小型 JS 库 并且它本身运行良好 然而 我们在与 Angular 集成时遇到了一个问题 我没有办法从内部观察控制器外部串行对象的属性 而且我也无法找到解决方法 理想情况下 有一个计算成
  • 使用 plist 创建测验的随机整数

    我想让用户单击一个按钮以 a b c 的形式生成十个问题测验 其中 a 和 b 的值从 10 到 10 并随机分配给十个问题 此外 问题应该在加法和减法之间随机切换 如何正确填充 plist 文件 我该如何使用arc4random用随机整数
  • 如何使用 libgit2sharp 获取文件的先前版本

    我正在尝试使用libgit2sharp获取文件的先前版本 我希望工作目录保持原样 至少恢复到以前的状态 我最初的方法是尝试存储 签出我想要的文件的路径 将其保存到字符串变量 然后存储弹出 有没有办法隐藏流行音乐 我不容易找到它 这是我到目前
  • 以主题作为文件名保存邮件

    大家早上好 我希望有人可以帮助我编写一段代码 我希望将选定的电子邮件保存到特定目录 并使用电子邮件的名称 当然还有 msg 文件 这就是我今天所拥有的 但它不起作用 它保存一个文件 但名称只有前 2 个字符 看起来在分号文件名后出错 例如
  • xkcd:外部性

    所以2013年4月1日 xkcd外部性 http xkcd com 1193 网络漫画以 Skein 1024 1024 哈希破解为特色contest http almamater xkcd com 我假设这一定只是一种暴力行为 其中随机字
  • OxyPlot:如何隐藏左侧和顶部轴线

    我在 Xamarin iOS 项目中使用 Oxyplot 来绘制条形图 这就是我的情节目前的样子 这里我需要隐藏右轴和顶轴 我试过 model Axes Add new LinearAxis Position AxisPosition Ri
  • “无法识别的选择器发送到实例”UINavigationController

    我的 Xcode 应用程序收到以下异常错误消息 UINavigationController setDeals unrecognized selector sent to instance 0x8338d40 在以下上下文中抛出异常prep
  • 在发布模式下,代码行为不符合预期

    以下代码在调试模式和发布模式下产生不同的结果 使用 Visual Studio 2008 int tmain int argc TCHAR argv for int i 0 i lt 17 i int result i 16 if resu
  • Dojo:如何使用自己的onMove事件(覆盖)

    在文档中据说 onMove mover leftTop e 在每次移动通知期间调用 实际上应该移动节点 可以被覆盖 但没有示例如何覆盖它 onMove 有人可以抛出几行代码来展示它是如何工作的吗 Thanks 您没有指出哪个 dojo Ja
  • 如今何时使用定点

    对于密集的数字运算 我正在考虑使用定点而不是浮点 当然 定点类型的大小有多少字节 它将在什么 CPU 上运行 如果我可以使用 对于英特尔 MMX 或 SSE 或任何新出现的东西 这都很重要 我想知道现在浮点运行速度比以往任何时候都快 是否值
  • Android MediaCodec:编码失败,因为视频轨道没有同步帧

    我计划将一个视频文件转换为另一个具有不同比特率 fps 等的视频文件 基本上我遵循中的示例http bigflake com mediacodec http bigflake com mediacodec 但是 日志显示视频轨道没有同步帧的
  • Heroku:“https://git.heroku.com”的用户名:git

    我正在尝试检查 heroku 上的 git 远程 heroku auth logout Local credentials cleared heroku auth login Enter your Heroku credentials Em
  • 如何查找特定 Subversion 用户所做的修订?

    使用命令行 我想查看特定用户所做的所有更改集 这可能吗 我查看了文档svn log但不知道如何做到这一点 我不知道有什么方法可以使用纯 Subversion 来做到这一点 但你可以做到with sed http svn haxx se us
  • PHP - preg_replace - 文本链接作为可点击链接

    我使用此 preg replace 将文本 url 更改为可在脚本中单击 将文本链接替换为带有 preg replace 的链接 https stackoverflow com questions 13105960 replacing te
  • jQuery element.data() 语法。我怎么知道`$(this)`是什么?

    我有以下 jQuery 变量 var confirmbox div div data defaultText This action cannot be reversed Are you sure you wish to do this d
  • intellij idea中设置tomcat的问题

    我正在尝试使用 intellij idea 创建一个简单的测试 Restful Web 服务 我正在关注这个教程 https medium com jamsesso starting out with jersey apache tomca
  • 当您克隆 Backbone.Collection 时,模型引用是否完好无损?

    我正在 clone ing 一个集合 以便我可以在其上使用拼接循环而不干扰原始集合 克隆阵列中的模型是原件还是副本 我需要的是包含原始模型的数组的副本 感谢您提供任何信息 您将获得与包装在相同类型的新集合中的源集合相同的模型 这是colle
  • 拖动元素时滚动 div 而不移动鼠标

    我开发了一个代码 其中包括一个表格 其中所有单元格都是可删除的 表格容器是具有固定高度和滚动条的 div 我想将一个元素 在我的示例中为黄色方块 拖到表格底部的最后一个表格单元格中 一切正常 但要在拖动元素时激活 div 容器的滚动条 我必
  • 如何绑定到 Style.Resource 中的附加属性?

    我正在尝试使用附加属性在 TextBox 的背景中创建提示文本标签 但无法解析样式资源中文本标题的绑定 风格定义