问题标签 [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.
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.
这是我尝试过的:
这给了我一个“绑定必须为非空”错误,我认为这是因为Binding
MultiDataTrigger 中的第一个条件没有属性。
在 XAML 中编写此代码的正确方法是什么?
编辑:
在尝试了 nemesv 和 Rachel 的答案后,代码现在可以编译并运行。但是,我为 IsSelected = true 和 IsInLiveMode = true 案例选择的颜色没有显示出来。这是我现在拥有的:
关于为什么有问题的案例不起作用的任何想法?
wpf - DataTrigger 不会在 Button 的派生类上触发
我们在整个应用程序中有大量带有图标和文本的按钮,我正在尝试为所有按钮提取通用样式。我想出了这个从 Button 派生的想法,并且有几个依赖属性。这个自定义按钮类具有我们应用程序中所有按钮共有的样式。
我的自定义按钮定义:
我使用这个控件如下:
事情看起来不错,但是当有界数据更改时触发器没有触发。如果我将相同的触发器应用于常规按钮,它似乎工作正常。
如果我遗漏了什么,你能告诉我吗?
编辑: 找到了一个优雅的解决方案。使用附加属性
c# - 使 Image.Source 依赖于 TextBox 和 Label 值的比较
我有以下 XML:
和 XAML:
我想使Image.Source
取决于TextBox.Text
等于Label
* 的参考值的条件。参考值是对 XML 文件的绑定,因此使用它作为比较的基础也是可以的。将TextBox
绑定到一个尚不存在的属性,因此可以作为一个选项使用。
*Label
当前用于ContentStringFormat
更改其值。如果这是有问题的,它可以被摆脱。
我可以使用aDataTrigger
直接绑定到表示此条件的属性,但这感觉像是一种 hack,我宁愿避免这种情况。我尝试设置 a MultiDataTrigger
,如下所示,但首先我无法使条件适用于Label
(它确实适用于TextBox
),其次,在我的情况下,恒定值不好。当条件评估为 false 时,它也没有“else”子句或默认值,但如果可以首先进行检查,我希望这不会成为问题。
c# - 从其他 Xaml 文件绑定到用户控件中的元素
谁能告诉我如何绑定到用户控件的元素?
我正在尝试使用与 IDataErrorInfo 一起使用的数据触发器来禁用/启用按钮。
所以当元素在同一个视图上时,我通常会这样做
但是现在我需要添加一个条件,该条件绑定到我的视图正在使用的 Usercontrol (AdressControl) 上的控件。
我希望像这样轻松访问用户控件的元素
但无济于事。任何帮助将非常感激
.net - 如果只满足一个条件,MultiDataTrigger 就会触发
在我的 UserControl 中,我有三个 ComboBoxes,必须在启用保存按钮之前选择它们。我定义了一个 MultiDataTrigger 绑定到我的 ViewModel 属性,这些属性最初设置为 null。因此,当控件加载时,按钮按预期被禁用,但只要选择了其中一个组合框,按钮就会被启用。据我了解,必须满足 MultiDataTrigger 的所有条件才能触发它?
这是我的按钮样式:
我的组合框:
我的按钮:
还有我的转换器:
谢谢,帕克斯
wpf - MultiDataTrigger 不会更改 TextBox 的 IsReadOnly 属性
我MultiDataTrigger
在多行中使用TextBox
:
当EnableNewEntry
和AllowArabic
变为真时,TextBox
应该变为只读。为了测试,我也改变了背景颜色。问题是在适当变化的IsReadOnly
地方没有变化。Background
我也尝试了以下设置器,但它也不起作用:
我究竟做错了什么?
里特什
c# - 在 XAML ResourceDictionary 内绑定
我有一种可怕的感觉,我想做的事情无法完成,但就是这样。也许有更好的方法。
我在一个单独的文件中有一个 ResourceDictionary,被拉入一个 UserControl(视图):
在 RD 中,我定义了一些按钮样式,其中一个包括条件,如果“IsCurrentFilter”转换器返回 True,则将前景设置为红色:
转换器在同一个 RD 中定义,进一步向上:
问题是转换器无法访问视图模型(它需要进行比较),并且该ViewModel
属性只是拒绝绑定到任何东西。错误是...
...这有点道理,因为我知道它不在视觉树中。
那么,我怎样才能绑定到这个 ResourceDictionary 中的视图模型呢?
c# - 验证规则未使用 2 个验证规则正确更新
我浏览了一些有关验证规则的帖子,但没有遇到我遇到的问题。
我正在为 WPF 窗口中的文本框使用验证规则。我有两项检查,一项针对空文本框,一项针对使用 RegEx 匹配的无效字符。
我的问题是这样的:
在我的文本框中:
- A型 - 有效,无显示
- 为空字符串点击退格键 - 有效,显示验证错误消息“请在所有字段中输入值”
- 类型 !- 不起作用 - 它应该显示“发现无效字符”,但仍显示“请在所有字段中输入值”。
- 退格到空字符串 - 技术上有效,因为它仍然显示第一个错误“请在所有字段中输入值”。
- A 型 - 有效,没有错误消息
- 类型 !- 很好,显示消息“发现无效字符。
反过来也一样。
打开窗户
- 类型 !- 很好,显示“发现无效字符。
- 退格到空字符串 - 仍然显示“发现无效字符”而不是“请在所有字段中输入一个值。
我的代码如下:
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 代码
非常感激您的帮忙。
问候,
尼尔
wpf - 使用 DataGridTextColumn 验证禁用/启用按钮
我有这个DataGrid
:
我正在尝试按ValidationRule
结果禁用和启用保存按钮。
但如果ValidationResult
设置为 true 或 false,按钮仍处于禁用状态。
c# - 几个 MultiDataTriggers 仅适用于最后一个
在一个UserControl
我有一个类型enum
(GroupStyle
类型eGroupStyle
)的DP和一个类型bool
(IsGrouped
)的DP。我需要在所有可能的情况下开始一些故事板。但MultiDataTrigger
只有最后一个有效。我哪里错了?另外我想知道是否存在一种更简单的方法来考虑这些条件。(检查IsGrouped
一次。)
C#:
XAML: