方法绑定或其他解决方案XAML/UWP

Method binding or other solutions XAML/UWP

我已将 ItemTemplate 绑定到我的 class。 class 有一个方法,其中 returns 一个 SolidColorBrush。我如何将它绑定到 XAML? class 是序列化的,所以我不能只创建 SolidColorBrush 变量。

XAML

<GridView.ItemTemplate>
    <DataTemplate x:DataType="local:GetRem" >
        <Grid Margin="-2,-5,-6,0"  HorizontalAlignment="Stretch" Background="{x:Bind GetColor}">

С#

public SolidColorBrush GetColor()
    {
        string ColorName = ReminderColor;
        Color Getit;
        if (ColorName == "1")
            Getit = Color.FromArgb(255, 135, 136, 0);
        else
            if (ColorName == "2")
                Getit = Color.FromArgb(177, 237, 237, 0);
            else
                if (ColorName == "3")
                    Getit = Color.FromArgb(214, 243, 153, 0);
                else
                    if (ColorName == "4")
                        Getit = Color.FromArgb(254, 243, 153, 0);
        SolidColorBrush TestBrush = new SolidColorBrush(Getit);
        return TestBrush;

    }     

晚了 6 个月,但您正试图使用​​ x:Bind 来不正确地运行:

你应该这样做

<Grid Margin="-2,-5,-6,0" HorizontalAlignment="Stretch" Background="{x:Bind GetColor()}">public static SolidColorBrush GetColor() 您可以查看 link 了解详情:

https://msdn.microsoft.com/en-us/windows/uwp/xaml-platform/x-bind-markup-extension

您应该绑定到 属性 而不是方法。像这样会更好:

public SolidColorBrush GetColor { 
    get {
        Color GetIt;
        switch(ReminderColor) {
            case("1"):
                 GetIt = Color.FromArgb(255, 135, 136, 0);
            case("2"):
                 GetIt = Color.FromArgb(177, 237, 237, 0);
            case("3"):
                 GetIt = Color.FromArgb(214, 243, 153, 0);
            case("4"):
                 GetIt = Color.FromArgb(214, 243, 153, 0);

        }
        SolidColorBrush TestBrush = new SolidColorBrush(Getit);
        return TestBrush;
   }
}