UWP:如何从XAML中的基类绑定属性

wd2eg0qa  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(179)

在过去的几天里,我一直在修修补补,试图找到一个解决方案的给定情况下。
我有一个包含不同颜色属性的基类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>

关于如何从基色类访问属性,有什么建议吗?

emeijp43

emeijp431#

关于如何从基色类访问属性,有什么建议吗?
ColorBlack不是视图模型的示例/本地属性。
绑定到静态属性时使用{x:Bind}

<Grid Background="{x:Bind vm:ColorPageViewModel.ColorBlack}"></Grid>

相关问题