问题标签 [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.
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)是否可以从绑定源(路径)解析绑定目标?
c# - ContentPresenter 出现奇怪的 BindingExpression 路径错误
在我的程序中,我有一个包含contentPresenter
. mainWindow 有一个名为MainWindowViewModel
. 此 viewModel 包含绑定到主窗口中的项目的属性。
Content
我的contentPresenter
由 UserControl->ViewModel->Model 结构表示。
这是contentPresenter
我正在使用的 xaml。
MainWindow.xaml:
LeftWidget
并且LeftWidgetEnabled
都是位于 中的属性MainWindowViewModel
。但是,BindingExpression path error
我收到的与LeftWidgetEnabled
. 出于某种原因,我的程序正在寻找contentPresenter
UserControl 的 ViewModel 中的属性。这对我来说没有多大意义,因为该程序LeftWidget
正确处理了该属性。
这两个属性都位于MainWindowViewModel
,那么为什么程序会在其他地方寻找该LeftWidgetEnabled
属性?我怎样才能解决这个问题?
另请注意:我设置DataContext
UserControls 的方式是这样的......
在<Window.Resources...
mainWindow.xaml 中:
c# - 为什么这个基本绑定失败并出现异常?
谁能解释为什么TagObject
下面代码上的绑定会引发以下绑定异常?
我的怀疑是因为TagObject
它本身不是它的子类,FrameworkElement
所以它本身没有数据上下文,因此不知道如何解决 XAML 绑定。
为了测试,我更改了TagObject
to的基本类型,FrameworkElement
果然,绑定错误消失了,但Value
仍然没有改变。我的理论是,虽然绑定现在有效,TagObject
但不是可视树的一部分,因此它没有继承它的DataContext
.
我还尝试让“TextBlock a name, then specifying it as the
ElementName in the binding, but that again threw a binding exception. In this case, my suspicion is that it can't find the named element because
TagObject”仍然不是可视化树的一部分,即使上面的基类发生了变化。
作为记录,我确实知道一个解决方案是简单地将对象创建隐藏在 ValueConverter 后面为我包装它,但我想知道是否有一个仅 XAML 的解决方案来解决TagObject
.
这是 XAML:
这也行不通...
这是代码:
c# - 需要帮助解决 BindingExpression 问题
我有这种风格:
但是该命令无法正常工作。查看输出窗口会产生这个问题:
ViewModel ICommand 属性:
我不知道如何解决这个问题。Button 的 Command 属性如何被解释为字符串?
如果它意味着什么,它在我的 App.xaml 文件中,而不是主窗口中。
wpf - 在 WPF DependencyProperty 上分离(即替换)绑定时获取通知
我有一个以编程方式创建的绑定到某个标准 WPF 控件的 DependencyProperty。我希望在此绑定与属性分离时调用我的函数。
可以将值更改通知附加到属性,但这意味着我需要在实际值更新时重新检查绑定是否仍然存在,如果它确实如此,它可能会影响性能。
相关:BindingExpression 的源更改时的通知?
.
以下是有关我要完成的工作的详细信息:
我正在编写一个类似 WPF Canvas 的控件,该控件具有自定义规则来放置、调整大小和旋转它的子项。
要旋转子控件,我需要像这样设置它们的 RenderTransformProperty:
如果有人在设计器中调整子控件的大小,并且不小心将其宽度或高度设为负值,即使是一瞬间,设计器也会完全删除我的 RenderTransform 以将其替换为 ScaleTransform{ ScaleX = -1 }。如果任何人或任何事物出于任何原因设置或重置子控件的 RenderTransform,也会发生同样的情况。恢复的唯一方法是关闭并重新打开设计器选项卡,这很烦人。
我唯一能做的就是订阅值更改事件并在绑定消失时重新应用绑定:
这可行,但在性能方面可能不是一个好主意,考虑到我在屏幕上最多有 1000 个控件,每个控件每秒更新大约 60 次 - 我必须为所有控件请求绑定路径以正确检查它们是否没有被覆盖.
属性未绑定时是否没有要监听的事件?
查看参考源,我发现当依赖属性数据源发生更改时,会调用Expression.OnDetach() 。但是,由于 BindingExpression 和 MultiBindingExpression 都是密封的,所以我需要将 BindingExpressionBase 子类化,这太麻烦了。
我还发现BindingExpression.Status属性是在绑定分离时设置的。因此,应该可以维护一个 BindingExpressions 列表并定期检查,这在性能方面可能会更好。这并不是一个真正干净的解决方案,因为检查需要在计时器上运行,并且不能在值更改事件中完成,因为这需要在已知的列表中查找绑定表达式,这并不是一个真正的快速操作,即使这样的列表是排序的。
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 ... 那么这里可能是什么问题?:/
c# - WPF BindingExpression 路径错误
我有BaseModel
字段为Id
,Created
等Deleted
的模型Name
。
从这个模型中,我得到了模型Category
和Brand
. 模型Brand
有字段Image
。
我也有类Node
(标题作为名称,值作为所有对象)
我使用Node
类ComboBox
。所以我有类别和品牌的组合框。原因类别和品牌是从 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 应用程序的性能。我该如何解决这个问题?
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上找到解决方案,但到目前为止我一直没有成功)
提前致谢,
国王问候马格努斯
angularjs - 在 Angular js 中加载页面时显示绑定表达式
我正在使用 Codeigniter 和 Angular js 创建博客站点,但问题是在页面加载时显示绑定表达式 {{firstName}}。是否有任何解决方案可以在 Angular js 中修复它。
angular - 如何在 Angular2 中获取模板绑定表达式作为字符串?
有没有办法在我的组件中获取字符串“myModel”?