问题标签 [binding-expressions]

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 投票
0 回答
136 浏览

wpf - 通过从源属性绑定来解析 DependencyObject

对于我的示例,假设我的 DataContext 中有这个:

XAML:

现在在我的DataContext我需要参考myContentControl

有什么办法可以通过Binding对象通过Binding Source(MyViewModel.SomeProperty) 来解析绑定Target(ContentControl.TagProperty )?

问题上下文:

我有一个从 DataGrid 派生的 CustomControl,这个网格支持过滤抛出标题,在标题模板内我放置了一个 TextBox。网格本身侦听 TextChanged 事件并按该文本过滤每一列。

而不是保存对每个 TextBox 的引用,或者遍历 VisualTree,我想知道是否可以从保存到 textBox.Text 的引用中跟踪 TextBox。

想到两个问题:

1)因为 Text 是一个字符串并且是不可变的,所以我不确定绑定如何跟踪它。

2)是否可以从绑定源(路径)解析绑定目标?

0 投票
2 回答
275 浏览

c# - ContentPresenter 出现奇怪的 BindingExpression 路径错误

在我的程序中,我有一个包含contentPresenter. mainWindow 有一个名为MainWindowViewModel. 此 viewModel 包含绑定到主窗口中的项目的属性。

Content我的contentPresenter由 UserControl->ViewModel->Model 结构表示。

这是contentPresenter我正在使用的 xaml。

MainWindow.xaml:

LeftWidget并且LeftWidgetEnabled都是位于 中的属性MainWindowViewModel。但是,BindingExpression path error我收到的与LeftWidgetEnabled. 出于某种原因,我的程序正在寻找contentPresenterUserControl 的 ViewModel 中的属性。这对我来说没有多大意义,因为该程序LeftWidget正确处理了该属性。

这两个属性都位于MainWindowViewModel,那么为什么程序会在其他地方寻找该LeftWidgetEnabled属性?我怎样才能解决这个问题?

另请注意:我设置DataContextUserControls 的方式是这样的......

<Window.Resources...mainWindow.xaml 中:

0 投票
1 回答
128 浏览

c# - 为什么这个基本绑定失败并出现异常?

谁能解释为什么TagObject下面代码上的绑定会引发以下绑定异常?

我的怀疑是因为TagObject它本身不是它的子类,FrameworkElement所以它本身没有数据上下文,因此不知道如何解决 XAML 绑定。

为了测试,我更改了TagObjectto的基本类型,FrameworkElement果然,绑定错误消失了,但Value仍然没有改变。我的理论是,虽然绑定现在有效,TagObject但不是可视树的一部分,因此它没有继承它的DataContext.

我还尝试让“TextBlock a name, then specifying it as theElementName in the binding, but that again threw a binding exception. In this case, my suspicion is that it can't find the named element becauseTagObject”仍然不是可视化树的一部分,即使上面的基类发生了变化。

作为记录,我确实知道一个解决方案是简单地将对象创建隐藏在 ValueConverter 后面为我包装它,但我想知道是否有一个仅 XAML 的解决方案来解决TagObject.

这是 XAML:

这也行不通...

这是代码:

0 投票
1 回答
42 浏览

c# - 需要帮助解决 BindingExpression 问题

我有这种风格:

但是该命令无法正常工作。查看输出窗口会产生这个问题:

ViewModel ICommand 属性:

我不知道如何解决这个问题。Button 的 Command 属性如何被解释为字符串?

如果它意味着什么,它在我的 App.xaml 文件中,而不是主窗口中。

0 投票
0 回答
365 浏览

wpf - 在 WPF DependencyProperty 上分离(即替换)绑定时获取通知

我有一个以编程方式创建的绑定到某个标准 WPF 控件的 DependencyProperty。我希望在此绑定与属性分离时调用我的函数。

可以将值更改通知附加到属性,但这意味着我需要在实际值更新时重新检查绑定是否仍然存在,如果它确实如此,它可能会影响性能。

相关:BindingExpression 的源更改时的通知?

.

以下是有关我要完成的工作的详细信息

我正在编写一个类似 WPF Canvas 的控件,该控件具有自定义规则来放置、调整大小和旋转它的子项。

要旋转子控件,我需要像这样设置它们的 RenderTransformProperty:

如果有人在设计器中调整子控件的大小,并且不小心将其宽度或高度设为负值,即使是一瞬间,设计器也会完全删除我的 RenderTransform 以将其替换为 ScaleTransform{ ScaleX = -1 }。如果任何人或任何事物出于任何原因设置或重置子控件的 RenderTransform,也会发生同样的情况。恢复的唯一方法是关闭并重新打开设计器选项卡,这很烦人。

我唯一能做的就是订阅值更改事件并在绑定消失时重新应用绑定:

这可行,但在性能方面可能不是一个好主意,考虑到我在屏幕上最多有 1000 个控件,每个控件每秒更新大约 60 次 - 我必须为所有控件请求绑定路径以正确检查它们是否没有被覆盖.

属性未绑定时是否没有要监听的事件?

查看参考源,我发现当依赖属性数据源发生更改时,会调用Expression.OnDetach() 。但是,由于 BindingExpression 和 MultiBindingExpression 都是密封的,所以我需要将 BindingExpressionBase 子类化,这太麻烦了。

我还发现BindingExpression.Status属性是在绑定分离时设置的。因此,应该可以维护一个 BindingExpressions 列表并定期检查,这在性能方面可能会更好。这并不是一个真正干净的解决方案,因为检查需要在计时器上运行,并且不能在值更改事件中完成,因为这需要在已知的列表中查找绑定表达式,这并不是一个真正的快速操作,即使这样的列表是排序的。

0 投票
1 回答
417 浏览

c# - 使用 ASP.NET 绑定表达式编写多个 If 语句

我需要使用使用 ASP.NET Web 表单绑定表达式的三重嵌套 if 语句。我尝试了以下方法:

问题出现在第一个 if 语句中,它没有写出我想要它写的值......:/有人可以帮我解决如何正确格式化这个 if 语句吗?

Eval("PraviTier") 应该写 - 1.5 Eval("ProductTierPrice") 应该写 - 1.25

取而代之的是 Eval("PraviTier") 正在写入 1.25 值...为什么会这样???

这是一张显示我的意思的图片:

在此处输入图像描述

有什么提示吗??

PS它好像第一个If语句被完全忽略了?!

编辑:我检查了存储过程返回什么... Eval("TierPricing") 在数据库中设置为 true ... 那么这里可能是什么问题?:/

0 投票
1 回答
427 浏览

c# - WPF BindingExpression 路径错误

我有BaseModel字段为Id,CreatedDeleted的模型Name

从这个模型中,我得到了模型CategoryBrand. 模型Brand有字段Image

我也有类Node(标题作为名称,值作为所有对象)

我使用NodeComboBox。所以我有类别和品牌的组合框。原因类别和品牌是从 BaseModel 派生的,我为它们使用同一个类Node

<ComboBox.ItemTemplate>我想显示Image它是否存在。所以我写了下一个代码:

它有效,它仅显示Brand项目的图像,因为只有它们具有Image.

但在输出窗口中,我看到下一条消息:

System.Windows.Data 错误:40:BindingExpression 路径错误:在“对象”“类别”(HashCode = 56044044)上找不到“图像”属性。BindingExpression:Path=Value.Image.FileLocation; DataItem='节点' (HashCode=65381042); 目标元素是 'Image' (Name='ImageCheckBox'); 目标属性是“源”(类型“ImageSource”)

正如我之前读到的,Binding 中的任何异常都会影响 WPF 应用程序的性能。我该如何解决这个问题?

0 投票
1 回答
69 浏览

c# - 从 Datatemplate Triggers 后面的代码中获取绑定表达式

我已经被设置为维护一个 wpf 应用程序,其中有一个用于记录目的的列表框。

使用列表框显示的项目是类型的TextMessage,即列表框通过以下方式绑定到这些文本消息。

ObservableCollection<TextMessage> Messages; listBox.DataContext = Messages;

然后添加消息,例如

Messages.Add(new TextMessage("Test", TypeOfMessage.Headline));

这是类的定义TextMessage

列表框的 xaml 定义如下所示:

这很好用(即消息以不同的字体粗细和颜色显示在列表框中,具体取决于它们的类型),但现在的问题是:

有没有办法使用 BindingExpression 或任何其他方式从 xaml 定义后面的代码中获取字体格式和颜色?

原因是我只想将格式设置在一个地方(就像现在一样在 xaml 中),但是当我想复制内容(使用后面的代码)(包括字体格式)到剪贴板时仍然能够重用它.

例子:

由于我是 wpf 的新手,如果有人有解决此问题的提示,我将不胜感激。(我已经努力在stackoverflow上找到解决方案,但到目前为止我一直没有成功)

提前致谢,

国王问候马格努斯

0 投票
1 回答
55 浏览

angularjs - 在 Angular js 中加载页面时显示绑定表达式

我正在使用 Codeigniter 和 Angular js 创建博客站点,但问题是在页面加载时显示绑定表达式 {{firstName}}。是否有任何解决方案可以在 Angular js 中修复它。

0 投票
2 回答
357 浏览

angular - 如何在 Angular2 中获取模板绑定表达式作为字符串?

有没有办法在我的组件中获取字符串“myModel”?