您好我正在尝试在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>
请帮我解决这个问题。提前谢谢。
答案 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。
ItemsPanel
的ItemsPanelTemplate
定义了用于项目布局的面板,而不是每个项目。如果希望列表中的每个项目都与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>