【发布时间】:2019-10-08 15:13:30
【问题描述】:
我正在尝试将边框画笔颜色绑定到实用程序文件的管理属性。引用非静态类中的静态类的静态属性的语法是什么?
<Window x:Class="Company.FieldServiceManagement.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:FieldServiceManagement"
xmlns:util="clr-namespace:Company.Utilities;assembly=Comp_Utilities"
mc:Ignorable="d"
Title="Field Service Management - Stand Alone" Height="750" MinHeight="500" Width="950" MinWidth="950">
<Window.Resources>
<util:ApplicationVariables x:Key="apv" />
</Window.Resources>
<Window.Style>
<Style TargetType="{x:Type Window}">
<Setter Property="BorderThickness" Value="3"/>
<Setter Property="BorderBrush" Value="{Binding Source={StaticResource apv}, Path=Colors.Management}"/>
</Style>
</Window.Style>
<Grid>
<ContentControl x:Name="mainContentControl"/>
</Grid>
</Window>
来自实用程序 DLL 程序集:
namespace Company.Utilities
{
public class ApplicationVariables
{
public static class Colors
{
public static Color Employee { get; } = Color.FromArgb(192, 255, 192);
public static Color Management { get; } = Color.FromArgb(255, 224, 192);
public static Color HumanResources { get; } = Color.FromArgb(255, 192, 192);
public static Color Payroll { get; } = Color.FromArgb(192, 255, 255);
public static Color Rerpoting { get; } = Color.FromArgb(255, 192, 255);
}
}
}
更新
这种差异,虽然在外界看来似乎很小,但潜在的重复帖子是一个简单的结构:非静态类 -> 静态属性,而我的情况是:非静态类 -> 静态类 -> 静态财产。引用方法不像潜在的重复帖子那样简单。
更新 #2
由于 ASh 发现了类型问题,因此创建了一个扩展以将绘图颜色转换为媒体颜色,然后创建并引用了 SolidColorBrush。
public static wpf.Color ColorDrawingToMedia(this Color color)
{
return wpf.Color.FromArgb(color.A, color.R, color.G, color.B);
}
----
public static WPF.SolidColorBrush ManagementBrush = new WPF.SolidColorBrush(Management.ColorDrawingToMedia());
----
<Setter Property="BorderBrush" Value="{x:Static util:ApplicationVariables+Colors.ManagementBrush}"/>
【问题讨论】:
-
我最初尝试过,然后与许多其他场景一起发布。没有运气并且厌倦了敲我的头,我创建了这个帖子,而不是通过 cmets 劫持另一个线程。与使用 Color 相比,SolidColorBrush 类型的问题似乎更多。
-
建议的副本中有大量信息,您的问题中没有任何内容表明您实际上尝试了所有方法。绑定到静态属性并不难。你试过
{x:Static}和this answer 一样吗?没有好的minimal reproducible example,就无法知道你做错了什么。 -
您在问题中注意到的差异根本没有差异。所有属性都存在于 some 类中,绑定静态属性不依赖于哪个类,也不依赖于该类是否为静态。 “引用方法”与建议的副本一样简单。
-
嵌套静态引用的语法与“+”不一样。是的,我尝试了源/路径引用。不应该仅仅因为张贴者没有说“我尝试了所有方法”就认为他们还没有进行大量研究并尝试了您链接的许多方法。是的,我已经看到并尝试过这些。 20 多年以来,我的最后一步是在进行详尽的研究后发布,而不是第一件事。
-
“人们不应该仅仅因为海报没有说“我尝试了所有的东西”就认为他们还没有进行大量研究” -- 如果您曾经在 Stack Overflow 上花费大量时间回答其他人的问题,您就会知道这是完全错误的。 99.94% 的时间,问题的作者实际上没有进行任何任何搜索,更不用说任何形式的彻底研究,以证明他们发布问题是正当的。虽然直接静态属性问题在这里可能不适用,但我仍然认为您不是第一个遇到这个问题的人,也不是问这个问题的人。