无法在xaml中使用SolidColorBrush的颜色属性绑定属性

时间:2018-02-09 06:54:12

标签: c# xaml uwp-xaml

您好我正在尝试在SolidColorBrush的颜色属性中绑定属性以在运行时更改颜色,但即使在属性值即将到来时我也没有获得任何颜色。

这里的房子:

   public static string mycolor { get; set; } = "Red"

以下是我的XAML:

<my:FlipViewItemControl  x:Name="myflipView" FlipView="{Binding ElementName=flipView}"
                ItemTemplate="{StaticResource CustomItemTemplate}"
                Margin="0">
                        <ListBox.ItemsPanel>
                            <ItemsPanelTemplate >
                                <StackPanel x:Name="ScrollListBox" HorizontalAlignment="Stretch"   Orientation="Horizontal">
                                    <StackPanel.Background>
                                        <SolidColorBrush  Color="{Binding mycolor, Mode=OneWay}" Opacity="0.9"></SolidColorBrush>
                                    </StackPanel.Background>
                                </StackPanel>
                            </ItemsPanelTemplate>
                        </ListBox.ItemsPanel>
                    </my:FlipViewItemControl>

请帮我解决这个问题。提前谢谢。

2 个答案:

答案 0 :(得分:0)

SolidCOlorBrush的Color属性属于Color类型,因此您应该使用

public static Color mycolor { get; set; } = Colors.Red

在XAML中,您可以将“红色”写为文本,并在幕后为您处理。

另一个选择是将IValueCOnverter添加到绑定中,如果由于某种原因,你需要它是一个普通的字符串。

答案 1 :(得分:0)

  

无法在xaml

中使用SolidColorBrush的颜色属性绑定属性

如果您只想更改ItemsPanel颜色,请在XAML中为StackPanel设置修正值。您不需要绑定来执行此操作,因为上述控件中只有一个ItemsPanel。如果确实需要使用绑定来实现它,绑定代码应如下所示:

<ItemsPanelTemplate>
    <StackPanel
        x:Name="ScrollListBox"
        HorizontalAlignment="Stretch"
        Orientation="Horizontal">
        <StackPanel.Background>
            <SolidColorBrush Opacity="0.9" Color="{Binding}" />
        </StackPanel.Background>
    </StackPanel>
</ItemsPanelTemplate>

背后的代码

 public static string mycolor { get; set; } = "Red";  
 public MainPage()
 {
     this.InitializeComponent();
     this.DataContext = mycolor;
     ...
 }

更多详情请参阅Data binding in depth

ItemsPanelItemsPanelTemplate定义了用于项目布局的面板,而不是每个项目。如果希望列表中的每个项目都与color属性绑定,则应在ItemTemplate内设置绑定。例如:

<ListBox x:Name="myflipView" Margin="0">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel
                x:Name="ScrollListBox"
                HorizontalAlignment="Stretch"
                Orientation="Horizontal">
                <StackPanel.Background>
                    <SolidColorBrush Opacity="0.9" Color="{Binding mycolor, Mode=OneWay}" />
                </StackPanel.Background>
                <TextBlock Text="{Binding Id}" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel
                x:Name="ScrollListBox"
                HorizontalAlignment="Stretch"
                Orientation="Horizontal">
                <StackPanel.Background>
                    <SolidColorBrush Opacity="0.9" Color="Azure" />
                </StackPanel.Background>
            </StackPanel>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>