问题标签 [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 回答
1974 浏览

c# - TemplateBinding 不适用于扩展 ComboBox 的自定义控件中的 SelectedItem

我们创建了一个自定义 ComboBox 控件,它有一个按钮来清除 ComboBox 的选择:

ItemsSource 的绑定工作正常,但 SelectedItem 的绑定不能。在谷歌上搜索后,我在这里找到了问题的解决方案。具体来说,将 SelectedItem 绑定更改为

SelectedItem="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedItem}"

使其按预期工作。

为什么 SelectedItem 上的原始 TemplateBinding 不起作用,而 ItemsSource 的 TemplateBinding 工作得很好?

0 投票
1 回答
604 浏览

silverlight - TemplateBinding DataContext in silverlight CustomControl

I have a rather interesting case with ComboBox control - CustomComboBox;

In the style of this ComboBox, Popup contains one custom control that requests a DataContext;

The idea:

  • to use this control several times on one page
  • to use it in a masterpage container
  • the masterpage control needs to have different DataContexts regarding the Page it is on

The logic:

  • In the overriden OnApplyTemplate I am getting the grid and connecting few eventhandlers

The problem:

  • The masterpage control is triggering OnApplyTemplate only once
  • The first appearance of the CustomComboBox is as expected. However, every next apearance is with same DataContext, even when changing the datacontext of the CustomComboBox These changes don't reach to change my CustomGrid DataContext

I am sure that something on the bindings or the presentation logic is bad... Please throw some thoughts on, I would appreciate a hint here

Thanks

0 投票
2 回答
5804 浏览

c# - 在自定义控件上使用 StringFormat 绑定

我正在尝试在 WPF 应用程序中使用自定义控件,但我在使用 StringFormat 绑定时遇到了一些问题。

问题很容易重现。首先,让我们创建一个 WPF 应用程序并将其命名为“TemplateBindingTest”。在那里,添加一个只有一个属性(文本)的自定义 ViewModel,并将其分配给 Window 的 DataContext。将 Text 属性设置为“Hello World!”。

现在,将自定义控件添加到解决方案。自定义控件非常简单:

将自定义控件添加到解决方案时,Visual Studio 自动创建了一个 Themes 文件夹,其中包含一个 generic.xaml 文件。让我们把控件的默认样式放在那里:

现在,只需将控件添加到窗口,并使用 StringFormat 在 Text 属性上设置绑定。还要添加一个简单的 TextBlock 以确保绑定语法正确:

编译,运行,aaaaand... 窗口显示的文字是:

你好世界!

测试2:世界你好!

在自定义控件上,StringFormat 被完全忽略。VS 输出窗口上看不到错误。这是怎么回事?

编辑:解决方法。

好的,TemplateBinding 具有误导性。我找到了原因和一个肮脏的解决方法。

首先,请注意问题与 Button 的 Content 属性相同:

发生什么了?让我们使用 Reflector 并深入了解 BindingBase 类的 StringFormat 属性。“分析”功能显示此属性由内部DetermineEffectiveStringFormat方法使用。让我们看看这个方法:

问题就在这里。EffectiveStringFormat 字段是解析绑定时使用的字段。并且仅当 DependencyProperty 是类型时才分配此字段String(我的是,作为 Button 的 Content 属性Object)。

为什么对象?因为我的自定义控件比我粘贴的要复杂一些,并且像按钮一样,我希望控件的用户能够提供子控件而不仅仅是文本。

所以现在怎么办?我们遇到了即使在 WPF 核心控件中也存在的行为,所以我可以保持“原样”。尽管如此,由于我的自定义控件仅用于内部项目,并且我希望它更易于从 XAML 中使用,因此我决定使用这个 hack:

Header是我的 TemplateBinding 中使用的属性。当向 提供值时Text,将应用 StringFormat,因为该属性的类型为,然后使用回调String将该值转发给该属性。Header它有效,但它真的很脏:

  • 和属性不同步,因为Header我更新时没有更新。我选择不为属性提供 getter 以避免一些错误,但如果有人直接从 DependencyProperty ( ) 读取值,仍然会发生这种情况。TextTextHeaderTextGetValue(TextProperty)
  • 如果有人同时为财产HeaderText财产提供价值,则可能会发生不可预测的行为,因为其中一个价值将丢失。

所以总的来说,我不建议使用这个黑客。仅当您真正控制您的项目时才这样做。如果控件有一点点机会被用于另一个项目,就放弃 StringFormat。

0 投票
2 回答
15063 浏览

wpf - 带有附加属性的模板绑定

我的按钮有一个标准样式,但我希望样式的某些部分是可配置的。例如,当为按钮触发 MouseOver 时,我会出现一个边框,并且我希望边框颜色是可配置的。

在这篇文章之后:http ://www.thomaslevesque.com/2011/10/01/wpf-creating-parameterized-styles-with-attached-properties/我想我可以使用附加属性和 TemplateBinding 来实现这一点。

我创建了以下附加属性:

我这样设置属性:

我的风格是这样的:

关键线在哪里

据我所见,这应该可以工作,但是在运行时在上面的行中出现以下错误:

无法将属性“值”中的值转换为“”类型的对象。标记文件中的对象“System.Windows.Setter”出错

我在这里做错了什么吗?我是 WPF 的新手,不知道出了什么问题,因为附加属性的类型是 Brush,这是我希望 BorderBrush 属性想要的。

0 投票
1 回答
374 浏览

c# - wp7 TemplateBinding 内容不起作用

我是使用 wpf 的新手,目前我正在尝试执行以下操作:我创建了一个包含 TextBlock 的简单 ContenctControl (CtrpushPinContent):

cs 文件如下所示:

在主 PhoneApplicationPage 我尝试执行以下操作:

但是我的解决方案不起作用。我看不到任何效果

我相信问题出在样式声明中:

因为当我把它改成

它根据需要显示“TestText”。

0 投票
2 回答
1419 浏览

binding - Knockoutjs 原生模板绑定和简单的字符串数组

我正在尝试理解本机knockoutjs 模板绑定,尤其是foreach 绑定

只是想知道如何使用本机出价访问当前项目?jQuery.tmpl可以使用/$item之类的东西$data。当数据源是基元数组时如何使用本机模板绑定执行相同操作,因此每个项目都没有命名字段?这是带有两个示例的JSFiddle,第一个 - 使用本地绑定,其中数据源是自定义对象数组,第二个 - 绑定到字符串数组。我无法让它工作,看起来我错过了一些明显的东西?

基本上,我试图理解本机绑定并能够使用本机绑定重构以下示例:JSFiddle:逗号分隔的已检查项目列表,因此我将能够保留一个可观察变量,该变量表示以逗号分隔的已检查项目列表。

0 投票
2 回答
769 浏览

wpf - 如何设置 TemplateBinding 以解决 WPF 错误“如果不在模板中,则无法设置 TemplateBinding。”?

我正在尝试实现此处概述的示例:

http://www.codeproject.com/Articles/30994/Introduction-to-WPF-Templates

作者声明“该ContentPresenter控件可用于显示 WPF 控件的内容。”

使用以下代码:

我已将其添加到我的窗口中,如下所示:

但我收到以下错误:

我该如何解决这个问题?

0 投票
0 回答
465 浏览

.net - 使用 ContentPresenter 自定义 UserControl,嵌套对象为空

我有一个自定义的 UserControl (CustomControl1),用作 MainPage.xaml 中的数据容器。
作为 MainPage-CustomControl1 的内容,我放置了一些按钮。

我的错误/问题:
将显示按钮,但是当我尝试设置按钮属性时出现错误。
按钮对象将为空……。但为什么?
此外,当我在开发环境中单击嵌套对象时,不会从嵌套对象中引发任何事件。只有当我在 XAML 中选择嵌套对象时,我才能使用 [Object]->Properties->Events。

Silverlight 源:带有 TemplateBinding 和错误的
Vers.4 Vers.6

我必须改变什么?
我认为,这可能是我在 CustomControl1 中的 ContentPresenter 绑定错误。

我发现很多页面都存在这种问题......但我无法修复我的错误......

我的 CustomControl1.xaml:

我的 CustomControl1.xaml.cs:

我的 MainPage.xaml:

0 投票
2 回答
661 浏览

wpf - 为 listboxitem 模板化绑定设置值

我有这种风格:

我的问题是我不知道在使用我的样式时要在 ListBox 上设置哪个属性,以便它的 ListBoxItems 的边框最终具有所需的边框画笔。我也想让这项工作适用于我风格的其他边框画笔。

我希望能够有两个具有相同样式但边框颜色不同的列表框。我有一个列表框:

更新..我试过这个:

但是,我得到:错误 8 TargetName 属性不能在样式设置器上设置。

0 投票
1 回答
273 浏览

silverlight - Silverlight,通过 UserControls 的 TemplateBindings 的路径

我有一个带有文本框(绑定文本框文本)的 MainPage.xaml 和一些嵌套的用户控件,它们都有一个带有模板绑定/绑定的文本框(4 个文本框)。
当我在某处更改文本时,我希望每个框中都有相同的文本。

解决方法:链接

我该怎么做才能同步所有文本?

谢谢!

MainPage.xaml(TextBoxText 是一个,我喜欢在任何地方显示)

通用的.xaml: