在过去的几天里,我一直在修修补补,试图找到一个解决方案的给定情况下。
我有一个包含不同颜色属性的基类AppColors
:
public class AppColors
{
public static Brush ColorTransparent { get; private set; }
public static Brush ColorBlack { get; private set; }
public AppColors()
{
ColorTransparent = new SolidColorBrush(U.Hex2Color("#00ffffff"));
ColorBlack = new SolidColorBrush(U.Hex2Color("#ff000000"));
}
}
我的ColorPage
ViewModel使用AppColors
类作为它的基础:
public class ColorPageViewModel: AppColors
{
public static Brush ColorCustom { get; private set; }
public ColorPageViewModel ()
{
ColorCustom = new SolidColorBrush(U.Hex2Color("#ffff1234"));
}
}
在ColorPage
XAML中,我想从基本颜色类绑定到ColorBlack
属性。
<Page
x:Class="MyApp.Pages.ColorPage"
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="using:MyApp"
xmlns:vm="using:MyApp.ViewModels"
mc:Ignorable="d">
<Page.DataContext>
<vm:ColorPageViewModel />
</Page.DataContext>
<!-- the property ColorBlack can not be retrieved, but no error is given -->
<Grid Background="{Binding ColorBlack}"></Grid>
</Page>
运行应用程序时未使用ColorBlack
属性的绑定。我希望从基色类中检索它。
我可以通过声明一个页面资源并将其用作绑定的源代码来解决这个问题,但这会破坏使用color类作为基础的整个目的。
<Page.Resources>
<local:AppColors x:Key="AppColors" />
</Page.Resources>
<Page.DataContext>
<vm:ColorPageViewModel />
</Page.DataContext>
<!-- the property ColorBlack works now! -->
<Grid Background="{Binding ColorBlack, Source={StaticResource AppColors}}"></Grid>
关于如何从基色类访问属性,有什么建议吗?
1条答案
按热度按时间emeijp431#
关于如何从基色类访问属性,有什么建议吗?
ColorBlack
不是视图模型的示例/本地属性。绑定到静态属性时使用
{x:Bind}
: