问题标签 [templatebinding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - 通过模板绑定更改路径属性
我有一个包含路径的控件模板(除了其他控件)。调整控件大小时应调整路径大小。描述路径的点和大小可以表示为控制大小的相对分数。
以下是模板的摘录:
Start 和 End 是 Point 类型的 DependencyProperty,Size 是 Size 类型的 DependencyProperty。
我目前正在做的是监听 FrameworkElement.SizeChanged 事件:
现在的问题是:是否有另一种(更优雅)的方式将路径的属性绑定到父控件的大小?
wpf - TemplateBinding 在某些情况下不起作用(使用 TranslateTransform 时)
这就是我在 WPF 中重现此问题的方式:
创建自定义控件:
在 Generic.xaml 文件中为其添加样式:
然后将其添加到主窗口:
然后运行应用程序,结果“Text”工作正常,但“OffSet”不起作用。我在 Windows Phone 7 开发环境中尝试了类似的事情,得到了相同的结果。
我应该如何修改代码以使 OffSet 工作?
谢谢
wpf - TemplateBinding 的限制
自定义控件(在 VS 2008 下编写)具有 SelectedColor 依赖属性,其控件模板包含以下内容:
除非将绑定替换为:
好的,我知道 TemplateBinding 是 Binding 的简化版本,它有一系列限制,那么导致上述代码不起作用的确切限制是什么?
silverlight - 在 ContentControl 中忽略 TemplateBinding 到 RowDefinition.Height
描述:
我有一个自定义内容控件,我正在尝试通过依赖属性启用一些外部设置。基本上它是一个有两个网格行的装饰面板,上一个是标题,下一个是内容(通过ContentPresenter
)。
有 3 个项目绑定到模板(通过 TemplateBinding)HeaderHeight
,TextSize
和Header
(每个项目都有其适当类型的依赖属性)。
问题:
虽然其中两个绑定工作得很好(即使在设计时),但第三个却不行。和绑定有效,FontSize="{TemplateBinding TextSize}"
但无效。Text="{TemplateBinding Header}"
<RowDefinition Height="{TemplateBinding HeaderHeight}" />
网格将行的高度拆分为 50/50,无论我将 HeaderHeight 属性设置为哪个值。它甚至不从 DP 元数据中获取默认值。
问题: 这个场景有什么问题?为什么其他两个绑定可以毫无问题地工作,而这个则表现得好像根本没有绑定?
注意:
如果我DataContext = this
在构造函数中设置并替换{TemplateBinding HeaderHeight}
为{Binding HeaderHeight}
,问题就会消失并按预期工作。但我想知道为什么我不需要对其他绑定做同样的事情来使它们工作。
XAML(主题/Generic.xaml):
内容控制 (C#):
自定义控件用法 (XAML):
wpf - generic.xaml 中的 TemplateBinding 和 Property 上的重绘已更改
我有一个自定义控件。在自定义控件中,有几个元素。这些元素之一应该有一个特殊的高度值。
我说的这个高度是下面代码中的 CanvasThickness :
在 generic.xaml 中是这个 CanvasThickness 用于画布的高度属性:
现在这个 Slider 的高度为 3。假设我像这样使用 CustomControl:
我假设 Slider 的高度为 12。但它仍然是 3。CanvasThickness 的值为 12。
如何在 PropertyChanged 上重绘 CustomControl?我尝试了 FrameworkPropertyMetadataOptions,但它不影响 CustomControl。
提前致谢。
编辑:如果可能,该解决方案也应该在 Silverlight 中运行。
wpf - ControlTemplate 中样式 DataTrigger 的模板绑定
在以下 XAML 中,我使用带边框的 Rectangle 作为 ToggleButton 的模板。我希望 BorderBrush 是一种不同的颜色,以反映 ToggleButton.IsChecked 的变化值。不幸的是,我在 DataTrigger 中使用 TemplateBinding 的尝试不起作用。我需要做什么?
编辑
当我构建并重新加载设计器时,出现以下错误:
错误 1 属性“绑定”不支持“模板绑定表达式”类型的值。
解决方案
silverlight - 使用模板绑定设置边框背景
Value="{TemplateBinding HeaderColor}"我创建了自己的控件,我想知道是否可以将 Border.Background 绑定到模板属性。目前我正在使用如下所示的 StaticResource 设置它:
我希望它是我的控件上的一个属性,并且能够将其设置为模板绑定
主页.xaml
我的课:
这第二个选项不起作用,我应该能够做到这一点吗?我没有收到错误,只是不会更改为我设置的颜色。
AngelWPF留下的评论要求更多代码,粘贴在下面,我正处于学习创建控件的开始阶段,想注意这一点,因为还有很多我还没有完成,一次一个:)
通用的.xaml
选择.cs
wpf - 控件模板中的 WPF 嵌套绑定
我已经成功创建了一个文本框,该文本框根据其模型/虚拟机中设置的验证规则显示/折叠错误消息。对于 ex. 的电子邮件,代码如下所示:
由于我有很多这些,我希望将所有这些都放在一个控制模板中,并将其重新定位到一个公共资源文件中。
我的模板如下所示:
我像这样链接到它:
不幸的是,它不执行任何验证,因此必须以某种方式破坏绑定......
请指教...
谢谢。
wpf - 附加属性上的 WPF TemplateBinding
我想了解这种 TemplateBinding 的使用:
这是在 ControlTemplate 定义中使用的行,用于重新定义扩展器的外观和感觉。(ControlTemplate TargetType=Expander)
由于扩展器类没有面板属性,我想了解应用控件模板时 Panel.Background 的来源。我想到了一个附加属性,但在 XAML 中我不能写类似的东西:
因此扩展器类似乎没有 Panel.Background 附加属性。
wpf - 如何将特定 ObservableCollection 项的属性绑定到 CustomControl 的 ControlTemplate
我有一个带有“状态”的可观察集合的自定义控件,有点像多状态按钮。这里只有必要的代码以避免混淆:
“MyState”类(集合中的对象)包含一个公共“Name”属性,我想在每个自定义控件的位置上方显示该属性。
现在。在窗口的 XAML 中,我创建了 2 个 MyMultiStateBtn 实例,其中一个看起来像这样(第二个显然有不同的“状态”列表):
到现在为止还挺好。请注意,这些控件使用模板(“MultiStateBtnTpl”)。这个模板使用 TextBoxes 来显示状态名称......这就是我在语法中迷失的地方。我会为你省去我百万次失败的尝试......这大致是我的想法(注意:我知道这个绑定不起作用!):
简而言之:如何让模板找到隐藏在可观察集合的项目中的字符串......
我知道信息就在那里,但我发现没有任何东西可以帮助我访问数组(集合)的各个元素中的数据。
提前感谢您的帮助!
塞布
PS:我可以创建 3 个单独的属性,并在 controltemplate 中访问这些属性。但是,在某些情况下,可能有多达 10 个甚至 20 个位置。我想避免拥有 20 个单独的属性。