问题标签 [multibinding]
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 - 在使用 MultiBinding 绑定多个 CommandParameters 方面需要更多帮助
我需要有一个 ToggleButton 的命令处理程序,它可以采用多个参数,即所述 ToggleButton 的 IsChecked 属性,以及一个常量值,它可以是字符串、字节、int ... 没关系。
我在 SO 上找到了这个很好的问题,并按照答案的链接阅读了 MultiBinding 和 IMultiValueConverter。在我不得不编写 MultiBinding 之前,它真的很顺利,当我意识到我还需要传递一个常量值并且不能做类似的事情时
然后我遇到了 Kent Boogaart 回答的另一个类似问题,然后我开始思考可以解决这个问题的方法。
一种可能的方法是不使用 MVVM,只需将 Tag 属性添加到我的 ToggleButton,在这种情况下,我的 MultiBinding 将如下所示:
Kent 曾发表评论,“如果你使用 MVVM,你应该能够解决这个问题”。但是,我不确定这是否适合我,即使我已采用 MVVM 作为 WPF 模式的必要选择。
之所以这么说,是因为我在UserControl中有不止一个ToggleButton,而且每个ToggleButtons的Commands都需要调用同一个函数。但是由于它们是ToggleButtons,我不能在ViewModel中使用绑定到IsChecked的属性,因为我不知道最后点击的是哪一个。我想我可以添加另一个私有财产来跟踪这一点,但这似乎有点傻。就常数而言,如果我做了跟踪的想法,我可能会摆脱它,但不确定是否有任何其他方法可以绕过它。
有人在这里对我有好的建议吗?:)
编辑——好的,所以我需要更新我的绑定,它仍然不能正常工作:
IsChecked 有效,但标签无效。我刚刚意识到 Tag 是一个字符串......呃。它现在正在工作!关键是使用Self的 RelativeSource 。
wpf - WPF:有没有办法在 MultiValueConverter 的 ConvertBack 方法中获取原始值?
我编写了一个 MultiValueConverter,它检查给定列表是否包含给定值,如果包含则返回 true。我用它来绑定到自定义复选框列表。现在我想编写 ConvertBack 方法,以便如果选中复选框,原始值将被发送到模型。有没有办法访问 ConvertBack 方法中的值?
XAML:
我在绑定时得到正确的结果,但是有没有办法在转换回来时获取绑定的 id?我想要实现的是,如果未选中复选框,则该值将从列表中删除,如果选中,则该值将添加到列表中。
validation - 双向多重绑定验证
我有这种情况,其中 ex,textbox1 有一个多重绑定,其值取决于 textbox2 和 textbox3,并且绑定是两种方式,如果减去,所有文本框都对 ex 错误应用相同的验证规则。
不知何故,如果 textbox1 更新了 textbox2 和 textbox3 验证将触发。但是当 textbox2 或 textbox3 更新时, textbox1 验证将不会触发。
- 我试过设置 ValidatesOnTargetUpdated="True" 但什么也没发生。
有什么建议吗?
c# - 为什么 MultiBinding a TranslateTransform.X 似乎在 WPF 中不起作用?
我希望我不是在傻傻地问这个问题,但我正在尝试在 WPF 中设计一个图形查看器,作为框架中的一个完全新手;尽管我确实为我的问题提出了一些解决方案,但我最引以为豪的一个......并没有在应有的地方发挥作用。我想要做的是将 ItemsControl 上的一个节点放置在我用 Dijkstra 的 alg + 一些数学计算的位置。问题是我在使用普通 X 和 Y 绑定时移动的是带边框的 TextBlock 的左上角,但我想操纵的是它们的中心。因此,我的节点最终会从我指定的点向下并向右移动,而不是以它为中心。
我最终决定使用 NodeViewModel 的 X/Y 属性和 Grid 的 ActualWidth/Height 进行多重绑定。发生的事情是我的所有节点都放置在 (0,0)!我什至调试了代码并查看了转换器,但返回值似乎还可以。我什至尝试了一些随机的东西,比如绑定到其他属性等。
我完全不解。
所以一个问题是——MultiBinding 是这样工作的吗?还是我犯了一些愚蠢的错误?我将在 XAML 代码下方发布我的转换器。XAML 中删减的部分是工具提示和嵌入的 ItemsControl,但删减这些部分并没有改变(除了提高代码的清晰度)。转换器中的铸造是因为直接铸造到浮动对我来说不起作用(但这无关紧要 - 即使它不是很漂亮,它也会以它的方式工作)。
另一个问题是——我可以用更简单的方式来做吗?喜欢直接操纵 TextBlock 的中心?
XAML:
C#:
干杯,迈克尔
c# - WPF 多重绑定
我需要不使用 XAML 直接在 C# 中实现 MultiBindings,我知道如何在 C# 中使用 IMultiValueConverter,但是,该怎么做:
在 C# 中?
wpf - 如何将对象中的新属性值分派给其他两个对象的相同属性
在 WPF 中,我有三个暴露相同DependencyProperty
的对象(假设它是一个整数)。我希望所有三个属性值保持同步,即每当对象中的 int 值发生变化时,该值就会传播到其他两个对象。我multibinding
想做这项工作,但我不知道如何检测哪个对象发生了变化,因此应该使用哪个值并将其传播到其他对象。
编辑:这是我的多绑定暂定代码,错误地希望它可以在没有额外代码的情况下工作:
但实际上,有一个运行时错误,说最后一条指令设置的绑定缺少转换器。但是我又不知道如何编写这个转换器(没有什么要转换的(因为在将 3 个 rgb 属性链接到颜色属性的相关 MS 代码示例中就是这种情况),只是为了转发更改的属性值到其他两个属性)。
我知道我可以通过在 3 种类型中创建一个 X_Changed 事件来解决问题,然后让每个对象注册到另外两个对象事件。我不喜欢这种“手动”方式,更愿意将 3 个属性绑定在一起。
wpf - 将文件路径多绑定到按钮 ControlTemplate
我正在尝试开发一个应用程序,该应用程序使用存储在单独的远程文件位置的多个图像。UI 元素的文件路径存储在应用程序设置中。虽然我了解如何使用 MultiBinding 和值转换器从应用程序设置访问图像,但我不确定如何将 Multibinding 集成到下面的 ImageButton ControlTemplate 中。谁能引导我朝着正确的方向前进?
wpf - 如何将多个值绑定到单个 WPF TextBlock?
我目前正在使用TextBlock
以下内容绑定名为的属性的值Name
:
现在,我想将另一个名为的属性绑定ID
到相同的TextBlock
.
是否可以将两个或多个值绑定到同一个TextBlock
?可以通过简单的连接来完成,例如Name + ID
,如果不能,还有什么方法可以解决?
wpf - FallbackValue 如何与 MultiBinding 一起使用?
我问是因为它似乎不起作用。
假设我们绑定到以下对象:
好吧,看起来如果我们对此使用MultiBinding会显示回退值,对吧?
然而结果,其实是“到了”。即使强制绑定返回DependencyProperty.UnsetValue
也不起作用:
对TargetNullValue进行了同样的尝试,这也是一个失败的过程。
所以看起来MultiBinding永远不会使用FallbackValue。这是真的,还是我错过了什么?
稍微搞砸了,我发现转换器可以返回我需要的 UnsetValue:
然而,这似乎是一个肮脏肮脏的黑客。我认为这样的场景会在框架中得到考虑。但是,我在 Reflector 中找不到任何东西。
wpf - MultiBinding 中子绑定的转换器
假设我有这个 MultiBinding:
这似乎不起作用:传递给FooBarConverter的值数组包含DependencyProperty.UnsetValue
每个值(在本例中为两个)。删除子绑定(FooConverter和BarConverter)上的转换器给了我实际值。顺便说一句:这些转换器被正确调用,看起来它们的结果被丢弃了。
这是预期的行为吗?我想绑定 2 个属性,因为我需要至少转换其中一个,然后再将它们扔到MultiValueConverter
...