问题标签 [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 投票
3 回答
2107 浏览

c# - 如何为 wpf 文本框编写逗号分隔的数字正则表达式验证

我正在开发一个WPF (.NET 3.5)应用程序,我需要验证 atextboxregular expression匹配空文本框或文本,如02145or05145021450587902445。我使用的表达是^(0(2|5)[0-9]{3})?((,0(2|5)[0-9]{3})*?)$

它几乎可以工作,只是我不会让我有空的文本框。这是一些代码

用于验证的类如下

这很好用,但是除非我在 txtNumbers 文本框中输入一个或多个数字,否则提交按钮将不会处于活动状态。我只是希望它允许空文本框。我应该如何做到这一点?感谢阅读

0 投票
1 回答
566 浏览

wpf - 列表视图中的超链接前景样式未发生

我有一个让我发疯的问题,我似乎无法找到解决方案。

我有一个 Listview,其中 listivew ItemTemplate 是一个看起来像这样的数据模板:

超链接的样式如下:

当我按原样使用它时,它不会像选择项目时预期的那样将前景变为白色。如果该命令未按预期启用,它确实会将前景变为灰色。如果我删除 Selector.IsSelectionActive 的条件,它会在项目被选择时将前景变为白色,但如果项目被选中但未激活,它也是白色的......我希望非活动选择为绿色。我也只用一个平面文本块尝试过这个,一个具有非常基本样式的按钮......似乎没有任何效果。

列表视图位于另一个用户控件中使用的用户控件中。数据模板位于第二个用户控件的资源字典中,并绑定到类型为 DataTemplate 的第一个用户控件的依赖属性,并且超链接的样式位于单独的资源字典中。

任何帮助都感激不尽

0 投票
3 回答
1933 浏览

wpf - WPF 样式取决于复选框状态

我正在创建一个设置编辑器,插件编写者可以在其中定义自己的用户界面来配置他们的插件。如果未选中复选框,我正在实现一个隐藏某些“高级”元素的功能。

XAML 复选框很简单:

理想情况下(稍后会详细介绍),实现者只需向高级控件添加一个标志(当未选中“高级”复选框时应隐藏该标志),如下所示:

问题在于制作隐藏IsAdvanced="True"元素时的魔法isAdvanced.IsChecked == false。我在窗口元素上使用这种样式具有所需的行为:

但是,这种方法存在两个问题:

  1. 它只为按钮添加功能,没有别的。该IsAdvanced标志可以(应该能够)添加到任何视觉元素。
  2. 它替换/覆盖按钮上的样式。

还有其他方法可以产生我想要的功能吗?我不害怕在代码隐藏中工作,但是一个优雅的 XAML 解决方案是理想的(因为这纯粹是一个 UI 更改,除了在用户的偏好中保存复选框的状态)。


其他一些表示高级元素的方法已经浮现在脑海中。其中包括使用动态资源和直接绑定:

使用资源字典可能会起作用,但这似乎是一个非常糟糕的解决方案,因为 UI 状态似乎不应该属于字典。手动绑定非常混乱,因为复选框的状态必须以某种方式发送到元素,除了硬编码值之外,我认为它不会变得一团糟。

这两种替代解决方案都将语义(“这是一个高级选项”)与外观(“高级选项应该折叠”)联系起来。来自 HTML 世界,我知道这是一件非常糟糕的事情,除非绝对必要,否则我拒绝接受这些方法。

0 投票
5 回答
2635 浏览

wpf - 是否可以让弹出窗口忽略 WPF / Touch 应用程序中的 MenuDropAlignment?

作为背景知识 - Windows 有一个适用于触控/平板电脑的功能,它可以根据您的“惯用手”改变弹出窗口/菜单的位置(以防止菜单出现在您的手下)。

本质上,如果您设置为“右手”(一旦您连接了触摸设备,它似乎默认为),您打开的每个弹出窗口都会被人为地踢到左侧 - 这会导致我们尝试的大量布局问题并将弹出窗口与它“弹出”的项目对齐:

平板电脑设置设置为左手 - 没有来自 Windows 的人为校正 平板电脑设置设置为左手 - 没有来自 Windows 的人为校正

平板电脑设置设置为右手 - Windows 人为调整我们的定位 平板电脑设置设置为右手 - Windows 人为调整我们的定位

我们可以使用SystemParameters.MenuDropAlignment检测此设置的设置,对于琐碎的弹出窗口,我们可以使用弹出窗口的实际宽度进行调整 - 但对于动态弹出窗口以及当我们将右到左支持加入混合时,这只是没有不工作。

目前看起来更有可能我们将不得不遍历每个弹出窗口,手动计算出一个值来调整踢,并为每个弹出窗口添加类似的内容:

所以.. 回到问题 :-) 有没有人知道如何阻止 WPF 弹出窗口查看此设置?

对于那些没有触控设备的用户,您可以通过运行以下命令访问 Tablet PC 设置:

C:\Windows\explorer.exe 外壳:::{80F3F1D5-FECA-45F3-BC32-752C152E456E}

看看它给自己造成的混乱:-)

0 投票
1 回答
1168 浏览

c# - 将项目添加到 ListView 时,MultiDataTrigger 的 EnterActions 中的 ColorAnimation 未触发

我有一个将 AlternationCount 设置为 2 的 ListView。我有一个 ListViewItem 样式,该样式当前将 ListViewItem 的背景颜色设置为交替颜色,我想添加第三个触发器,该触发器触发 ColorAnimation 以在红色和白色之间为颜色设置动画绑定 ViewModel 的一个属性为真(在本例中为一个名为“Locked”的属性)。

我遇到了这篇文章,并尝试了底部的 xaml:

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/e7897cbd-71d9-45e6-9b17-0cd5bde5859f

但是,直到我将鼠标悬停或选择项目,然后选择或将鼠标悬停在不同的项目上,动画似乎不会触发我。我从前两个 MultiDataTriggers 中获得了交替的颜色,但是当项目添加到集合中时动画不会触发。这是我的 XAML:

0 投票
2 回答
1625 浏览

wpf - 无法在样式中设置工具提示

我搜索并发现我无法直接在 setter.value 中设置工具提示(在 style.xaml 文件中)。但是我可以使用静态资源来设置工具提示。

我的问题是,因为我需要为工具提示提供动态文本,所以我不能使用静态资源。我该怎么做?

这是我的例子。

对于用法,我可以用作

0 投票
1 回答
3078 浏览

wpf - HighlightBrushKey 设置在 Windows 7 中不起作用

我的资源字典中定义了以下样式:

当我使用 Windows XP 时,我得到的行为是我的渐变被用于突出显示和选择。现在我已经切换到使用 Windows 7,似乎不再使用渐变,突出显示/选择颜色现在是 VS 外观的浅蓝色。

关于为什么会发生这种情况以及如何解决这个问题的任何建议,以使其在 Windows XP 和 Windows 7 上运行相同(我们有一个多平台环境)

谢谢你。

评论后的完整解决方案

0 投票
2 回答
8409 浏览

wpf - 在 WPF 中使用 DataTrigger

TextBox在 XAML 中定义了一个控件,我想TextBox根据它的 IsReadOnly 或 IsEnabled 属性应用不同的背景颜色。我使用 dataTriggers 在颜色之间进行实际切换,如下所示:

TextBox 的定义如下图所示:

但问题是,颜色没有正确应用。

上述方法有什么问题吗?

0 投票
1 回答
456 浏览

c# - MultiDataTrigger 如何知道其 ConditionCollection 中的 Condition 何时更新?

我正在尝试使行为具有类似于 MultiDataTrigger 的 ConditionCollection。我查看了反映的代码,但我似乎无法理解 MultiDataTrigger 如何知道何时通过其逻辑来确定是否满足条件。

这是代码:

}

0 投票
1 回答
1410 浏览

wpf - 使用 multiDataTrigger 时的 TextBlock 异常

我正在尝试将 2 个触发器添加到文本块的可见性属性。以下代码导致“TextBlock 异常”。知道为什么吗?