问题标签 [multidatatrigger]

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 投票
2 回答
26890 浏览

wpf - 在 WPF 样式中触发多个条件的正确方法是什么

我的 WPF 应用程序中有一个DataGrid控件。我有一个DataGridRow运行良好的类的默认自定义样式。但是,对于这一DataGrid特定屏幕上的这一特定,我需要不同的自定义样式。

每行中的项目都有一个bool属性,当设置时,我想用不同的前景色和背景色显示该行。However, when the row is selected AND when that property is set, I want a different foreground and background color to show that it's selected AND the property is set to true.

这是我尝试过的:

这给了我一个“绑定必须为非空”错误,我认为这是因为BindingMultiDataTrigger 中的第一个条件没有属性。

在 XAML 中编写此代码的正确方法是什么?

编辑:

在尝试了 nemesv 和 Rachel 的答案后,代码现在可以编译并运行。但是,我为 IsSelected = true 和 IsInLiveMode = true 案例选择的颜色没有显示出来。这是我现在拥有的:

关于为什么有问题的案例不起作用的任何想法?

0 投票
3 回答
511 浏览

wpf - DataTrigger 不会在 Button 的派生类上触发

我们在整个应用程序中有大量带有图标和文本的按钮,我正在尝试为所有按钮提取通用样式。我想出了这个从 Button 派生的想法,并且有几个依赖属性。这个自定义按钮类具有我们应用程序中所有按钮共有的样式。

我的自定义按钮定义:

我使用这个控件如下:

事情看起来不错,但是当有界数据更改时触发器没有触发。如果我将相同的触发器应用于常规按钮,它似乎工作正常。

如果我遗漏了什么,你能告诉我吗?

编辑: 找到了一个优雅的解决方案。使用附加属性

0 投票
2 回答
447 浏览

c# - 使 Image.Source 依赖于 TextBox 和 Label 值的比较

我有以下 XML:

和 XAML:

我想使Image.Source取决于TextBox.Text等于Label* 的参考值的条件。参考值是对 XML 文件的绑定,因此使用它作为比较的基础也是可以的。将TextBox绑定到一个尚不存在的属性,因此可以作为一个选项使用。

*Label当前用于ContentStringFormat更改其值。如果这是有问题的,它可以被摆脱。

我可以使用aDataTrigger直接绑定到表示此条件的属性,但这感觉像是一种 hack,我宁愿避免这种情况。我尝试设置 a MultiDataTrigger,如下所示,但首先我无法使条件适用于Label(它确实适用于TextBox),其次,在我的情况下,恒定值不好。当条件评估为 false 时,它​​也没有“else”子句或默认值,但如果可以首先进行检查,我希望这不会成为问题。

0 投票
1 回答
3081 浏览

c# - 从其他 Xaml 文件绑定到用户控件中的元素

谁能告诉我如何绑定到用户控件的元素?

我正在尝试使用与 IDataErrorInfo 一起使用的数据触发器来禁用/启用按钮。

所以当元素在同一个视图上时,我通常会这样做

但是现在我需要添加一个条件,该条件绑定到我的视图正在使用的 Usercontrol (AdressControl) 上的控件。

我希望像这样轻松访问用户控件的元素

但无济于事。任何帮助将非常感激

0 投票
1 回答
3684 浏览

.net - 如果只满足一个条件,MultiDataTrigger 就会触发

在我的 UserControl 中,我有三个 ComboBoxes,必须在启用保存按钮之前选择它们。我定义了一个 MultiDataTrigger 绑定到我的 ViewModel 属性,这些属性最初设置为 null。因此,当控件加载时,按钮按预期被禁用,但只要选择了其中一个组合框,按钮就会被启用。据我了解,必须满足 MultiDataTrigger 的所有条件才能触发它?

这是我的按钮样式:

我的组合框:

我的按钮:

还有我的转换器:

谢谢,帕克斯

0 投票
1 回答
670 浏览

wpf - MultiDataTrigger 不会更改 TextBox 的 IsReadOnly 属性

MultiDataTrigger在多行中使用TextBox

EnableNewEntryAllowArabic变为真时,TextBox应该变为只读。为了测试,我也改变了背景颜色。问题是在适当变化的IsReadOnly地方没有变化。Background

我也尝试了以下设置器,但它也不起作用:

我究竟做错了什么?

里特什

0 投票
2 回答
2414 浏览

c# - 在 XAML ResourceDictionary 内绑定

我有一种可怕的感觉,我想做的事情无法完成,但就是这样。也许有更好的方法。

我在一个单独的文件中有一个 ResourceDictionary,被拉入一个 UserControl(视图):

在 RD 中,我定义了一些按钮样式,其中一个包括条件,如果“IsCurrentFilter”转换器返回 True,则将前景设置为红色:

转换器在同一个 RD 中定义,进一步向上:

问题是转换器无法访问视图模型(它需要进行比较),并且该ViewModel属性只是拒绝绑定到任何东西。错误是...

...这有点道理,因为我知道它不在视觉树中。

那么,我怎样才能绑定到这个 ResourceDictionary 中的视图模型呢?

0 投票
1 回答
2359 浏览

c# - 验证规则未使用 2 个验证规则正确更新

我浏览了一些有关验证规则的帖子,但没有遇到我遇到的问题。

我正在为 WPF 窗口中的文本框使用验证规则。我有两项检查,一项针对空文本框,一项针对使用 RegEx 匹配的无效字符。

我的问题是这样的:

在我的文本框中:

  1. A型 - 有效,无显示
  2. 为空字符串点击退格键 - 有效,显示验证错误消息“请在所有字段中输入值”
  3. 类型 !- 不起作用 - 它应该显示“发现无效字符”,但仍显示“请在所有字段中输入值”。
  4. 退格到空字符串 - 技术上有效,因为它仍然显示第一个错误“请在所有字段中输入值”。
  5. A 型 - 有效,没有错误消息
  6. 类型 !- 很好,显示消息“发现无效字符。

反过来也一样。

打开窗户

  1. 类型 !- 很好,显示“发现无效字符。
  2. 退格到空字符串 - 仍然显示“发现无效字符”而不是“请在所有字段中输入一个值。

我的代码如下:

ProviderNew.xaml:

Privder 代码背后 - ProviderNew.xaml.cs

值转换器类

提供者类

验证规则类

我尝试过设置 LostFocus 和 TextChanged 事件以强制更新使用:

在 Validate 方法上设置断点表明完成了正确的匹配并返回了正确的 ValidationResult,但它不会正确更新文本。

我在做一些非常愚蠢的事情吗?

任何建议将不胜感激。

编辑 1。

是的,我有这个工作,使用 MultiDataTrigger 和绑定到文本框。

什么不起作用是当我第一次显示窗口时,按钮是启用的,我不希望它是这样,因为这可能允许用户使用空文本框单击保存。

当窗口打开时,验证规则不能从一开始就直接起作用。

我将焦点设置在文本框上,如果它失去焦点或输入了不正确的数据,则验证规则将启动并禁用该按钮。

将按钮设置为默认禁用,使其在打开时禁用,但是当没有验证错误时它不会启用。

我可以通过强制检查加载事件的验证规则来使其工作,使用

但是当窗口第一次打开时,它立即显示验证错误消息“请在所有字段中输入一个值”,我不太喜欢它的外观。

无论如何,或者我不能两全其美。

这是按钮代码

谢谢,

尼尔

编辑 2

一个快速的问题。我找不到 RelayCommand 命名空间。在周围搜索其他代码时,我发现了一个来自 microsoft 的 MVVM 示例,它实现了 RelayCommand : ICommand 类。

它是否正确?

代码是:

我在 ProviderNew.xaml.cs 中实现了以下内容:

老实说,我不确定“if (!string.IsNullOrEmpty(ProviderName))”的块中应该编码什么

您还说要在 DataContext 中添加 ICommand 代码,所以不确定它是否在正确的位置,因为当我打开窗口时,启用保存并单击它什么也不做,即使所有字段中都有正确的数据。

这是按钮的 ProviderNew xaml 代码

非常感激您的帮忙。

问候,

尼尔

0 投票
1 回答
2540 浏览

wpf - 使用 DataGridTextColumn 验证禁用/启用按钮

我有这个DataGrid

我正在尝试按ValidationRule结果禁用和启用保存按钮。

但如果ValidationResult设置为 true 或 false,按钮仍处于禁用状态。

0 投票
1 回答
1180 浏览

c# - 几个 MultiDataTriggers 仅适用于最后一个

在一个UserControl我有一个类型enumGroupStyle类型eGroupStyle)的DP和一个类型boolIsGrouped)的DP。我需要在所有可能的情况下开始一些故事板。但MultiDataTrigger只有最后一个有效。我哪里错了?另外我想知道是否存在一种更简单的方法来考虑这些条件。(检查IsGrouped一次。)

C#:

XAML: