WPF C#在代码中更改资源字典的强调色

Posted

技术标签:

【中文标题】WPF C#在代码中更改资源字典的强调色【英文标题】:WPF C# change resource dictionary accent color in code 【发布时间】:2021-08-16 07:12:55 【问题描述】:

我有一个文本框enter image description here 选中时文本框突出显示,并使用 app.xaml 中资源字典中的强调色

                <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.Green.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Lime.xaml" />

& 如果用户名少于 8 个字符,我希望强调色变为红色,有什么办法吗?

【问题讨论】:

你试过什么。此外,使用 SO 来托管您的图像而不是提供一些外部链接可能是一个好主意。人们可能对点击外部链接(恶意软件)感到不舒服 我试图进行绑定并设置一个根据文本框长度而变化的值,但我对绑定不太熟悉,所以我不确定这是否可行。我更新了 gif 的链接,谢谢 :) 【参考方案1】:

您必须在本地覆盖该文本框的模板才能添加在 IValueConverter 上触发的数据触发器。 如果没有看到有问题的模板,我真的无法更具体,因为我们不知道口音是如何设置的。 延伸阅读:

https://docs.microsoft.com/de-de/dotnet/api/system.windows.datatrigger?view=net-5.0 https://docs.microsoft.com/en-us/dotnet/desktop/wpf/controls/how-to-create-apply-template?view=netdesktop-5.0 Custom trigger for length of TextBox text

【讨论】:

感谢您的链接和建议,我会试试这个并告诉您是否有效。【参考方案2】:

我不确定您的解释是否清楚您的问题是什么。据我了解,您问的是如果文本少于 8 个字符,您将如何更改文本的颜色? 如果这是您的问题,那么“string.Length”就足够了。

【讨论】:

它不是我要更改颜色的文本,如果您看到我发布的 gif,它会显示我要重新着色的内容,它位于底部的行,位于文本下方.它从 app.xaml 中的资源字典中获取颜色,我想知道是否可以根据文本框中字符串的长度来更改它

以上是关于WPF C#在代码中更改资源字典的强调色的主要内容,如果未能解决你的问题,请参考以下文章

WPF XAML Windows 11 强调色

在运行时切换 wpf 资源字典

C# wpf BitmapImage从本地资源获得未知像素大小的图片,如何将其对象设为指定大小

wpf里如何动态改变一个按钮模板里边的静态资源

wpf中资源文件字典如何使它也拥有cs文件

关于 WPF 中资源字典的问题