问题标签 [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.

0 投票
1 回答
1635 浏览

wpf - 通过模板绑定更改路径属性

我有一个包含路径的控件模板(除了其他控件)。调整控件大小时应调整路径大小。描述路径的点和大小可以表示为控制大小的相对分数。

以下是模板的摘录:

Start 和 End 是 Point 类型的 DependencyProperty,Size 是 Size 类型的 DependencyProperty。

我目前正在做的是监听 FrameworkElement.SizeChanged 事件:

现在的问题是:是否有另一种(更优雅)的方式将路径的属性绑定到父控件的大小?

0 投票
2 回答
5296 浏览

wpf - TemplateBinding 在某些情况下不起作用(使用 TranslateTransform 时)

这就是我在 WPF 中重现此问题的方式:

创建自定义控件:

在 Generic.xaml 文件中为其添加样式:

然后将其添加到主窗口:

然后运行应用程序,结果“Text”工作正常,但“OffSet”不起作用。我在 Windows Phone 7 开发环境中尝试了类似的事情,得到了相同的结果。

我应该如何修改代码以使 OffSet 工作?

谢谢

0 投票
1 回答
805 浏览

wpf - TemplateBinding 的限制

自定义控件(在 VS 2008 下编写)具有 SelectedColor 依赖属性,其控件模板包含以下内容:

除非将绑定替换为:

好的,我知道 TemplateBinding 是 Binding 的简化版本,它有一系列限制,那么导致上述代码不起作用的确切限制是什么?

0 投票
2 回答
1302 浏览

silverlight - 在 ContentControl 中忽略 TemplateBinding 到 RowDefinition.Height

描述: 我有一个自定义内容控件,我正在尝试通过依赖属性启用一些外部设置。基本上它是一个有两个网格行的装饰面板,上一个是标题,下一个是内容(通过ContentPresenter)。

有 3 个项目绑定到模板(通过 TemplateBinding)HeaderHeightTextSizeHeader(每个项目都有其适当类型的依赖属性)。

问题: 虽然其中两个绑定工作得很好(即使在设计时),但第三个却不行。和绑定有效,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):

0 投票
2 回答
896 浏览

wpf - generic.xaml 中的 TemplateBinding 和 Property 上的重绘已更改

我有一个自定义控件。在自定义控件中,有几个元素。这些元素之一应该有一个特殊的高度值。

我说的这个高度是下面代码中的 CanvasThickness :

在 generic.xaml 中是这个 CanvasThickness 用于画布的高度属性:

现在这个 Slider 的高度为 3。假设我像这样使用 CustomControl:

我假设 Slider 的高度为 12。但它仍然是 3。CanvasThickness 的值为 12。

如何在 PropertyChanged 上重绘 CustomControl?我尝试了 FrameworkPropertyMetadataOptions,但它不影响 CustomControl。

提前致谢。

编辑:如果可能,该解决方案也应该在 Silverlight 中运行。

0 投票
2 回答
10440 浏览

wpf - ControlTemplate 中样式 DataTrigger 的模板绑定

在以下 XAML 中,我使用带边框的 Rectangle 作为 ToggleButton 的模板。我希望 BorderBrush 是一种不同的颜色,以反映 ToggleButton.IsChecked 的变化值。不幸的是,我在 DataTrigger 中使用 TemplateBinding 的尝试不起作用。我需要做什么?

编辑

当我构建并重新加载设计器时,出现以下错误:

错误 1 ​​属性“绑定”不支持“模板绑定表达式”类型的值。

解决方案

0 投票
1 回答
3580 浏览

silverlight - 使用模板绑定设置​​边框背景

Value="{TemplateBinding HeaderColor}"我创建了自己的控件,我想知道是否可以将 Border.Background 绑定到模板属性。目前我正在使用如下所示的 StaticResource 设置它:

我希望它是我的控件上的一个属性,并且能够将其设置为模板绑定

主页.xaml

我的课:

这第二个选项不起作用,我应该能够做到这一点吗?我没有收到错误,只是不会更改为我设置的颜色。

AngelWPF留下的评论要求更多代码,粘贴在下面,我正处于学习创建控件的开始阶段,想注意这一点,因为还有很多我还没有完成,一次一个:)

通用的.xaml

选择.cs

0 投票
1 回答
7841 浏览

wpf - 控件模板中的 WPF 嵌套绑定

我已经成功创建了一个文本框,该文本框根据其模型/虚拟机中设置的验证规则显示/折叠错误消息。对于 ex. 的电子邮件,代码如下所示:

由于我有很多这些,我希望将所有这些都放在一个控制模板中,并将其重新定位到一个公共资源文件中。

我的模板如下所示:

我像这样链接到它:

不幸的是,它不执行任何验证,因此必须以某种方式破坏绑定......

请指教...

谢谢。

0 投票
0 回答
998 浏览

wpf - 附加属性上的 WPF TemplateBinding

我想了解这种 TemplateBinding 的使用:

这是在 ControlTemplate 定义中使用的行,用于重新定义扩展器的外观和感觉。(ControlTemplate TargetType=Expander)

由于扩展器类没有面板属性,我想了解应用控件模板时 Panel.Background 的来源。我想到了一个附加属性,但在 XAML 中我不能写类似的东西:

因此扩展器类似乎没有 Panel.Background 附加属性。

0 投票
1 回答
3601 浏览

wpf - 如何将特定 ObservableCollection 项的属性绑定到 CustomControl 的 ControlTemplate

我有一个带有“状态”的可观察集合的自定义控件,有点像多状态按钮。这里只有必要的代码以避免混淆:

“MyState”类(集合中的对象)包含一个公共“Name”属性,我想在每个自定义控件的位置上方显示该属性。

现在。在窗口的 XAML 中,我创建了 2 个 MyMultiStateBtn 实例,其中一个看起来像这样(第二个显然有不同的“状态”列表):

到现在为止还挺好。请注意,这些控件使用模板(“MultiStateBtnTpl”)。这个模板使用 TextBoxes 来显示状态名称......这就是我在语法中迷失的地方。我会为你省去我百万次失败的尝试......这大致是我的想法(注意:我知道这个绑定不起作用!):

简而言之:如何让模板找到隐藏在可观察集合的项目中的字符串......

我知道信息就在那里,但我发现没有任何东西可以帮助我访问数组(集合)的各个元素中的数据。

提前感谢您的帮助!

塞布

PS:我可以创建 3 个单独的属性,并在 controltemplate 中访问这些属性。但是,在某些情况下,可能有多达 10 个甚至 20 个位置。我想避免拥有 20 个单独的属性。