【问题标题】:How to Call Variable from Class in XAML如何在 XAML 中从类中调用变量
【发布时间】:2020-09-26 11:42:08
【问题描述】:

我有一个名为 ClsGlobVar.vb 的类,我在其中定义了纯色画笔颜色。这些颜色将用于根据条件和用户偏好设置颜色。

在类中,我将我的颜色定义为一个示例。

Public Shared ColorHighlight = New SolidColorBrush(ColorConverter.ConvertFromString("#FFF48B2A"))

我想使用该变量来设置我的 application.xaml 文件中的颜色。比如:

<SolidColorBrush x:Key="ColHighlight" Color="{Binding Path=clsGlobVar.ColorHighlight}"/>

【问题讨论】:

标签: wpf vb.net


【解决方案1】:

这在技术上是 Binding to static property in static class in WPF 的副本,但这是在 C# 中,所以我将在 VB.NET 中回答。

首先,ColorHighlight 必须是属性,而不是字段。绑定通常不适用于字段。

Public Shared Property ColorHighlight As New SolidColorBrush(ColorConverter.ConvertFromString("#FFF48B2A"))

VB.NET 中的Shared 基本上等同于C# 中的static。 WPF 似乎也使用名称static,因为用于引用Shared 成员的标记扩展是x:Static。在您的示例中,您可以像这样使用它:

<SolidColorBrush x:Key="ColHighlight" Color="{x:Static local:clsGlobVar.ColorHighlight}"/>

注意我添加了local:。这是您自己项目的XAML namespace 的默认前缀。


应该注意,这种绑定到Shared 属性的方法不支持更改通知。如果ColorHighlight 的值在运行时发生变化,SolidColorBrush 将不会更新。

如果您需要更改通知,我建议您实施“单例模式”。在上面链接的同一个问题中,an answer 也建议了这一点。使用单例模式创建的类也可以实现 INotifyPropertyChanged 并因此提供更改通知,这与 Shared 类/属性不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 2011-07-23
    • 2010-10-30
    • 2018-01-03
    • 1970-01-01
    相关资源
    最近更新 更多