我有这个网格:
@Html.DropDownListFor(m => m.DistrictId,
new List<SelectListItem> {
new SelectListItem { Value = "0" , Text = "Option A" },
new SelectListItem { Value = "1" , Text = "Option B" }
}, new { @class="classname"})
在我的代码中,如果我这样设置背景:
<Grid x:Name="topGrid" Height="100" VerticalAlignment="Top" Margin="10,0,0,0" />
使用此扩展程序:
topGrid.Background = "#FF3C3C3C".ToBrush()
我可以很好地更改背景,但是我的表单上有大约20个网格,我想使用绑定一次更改所有网格的背景。
我已经尝试过这样做:
这是xml:
Module Extensions
<Extension()>
Function ToBrush(ByVal HexColorString As String) As SolidColorBrush
Return CType((New BrushConverter().ConvertFrom(HexColorString)),
SolidColorBrush)
End Function
End Module
这是代码:
<Grid x:Name="topGrid" Background="{Binding MyBackgroundColor}" Height="100" VerticalAlignment="Top" Margin="10,0,0,0" >
答案 0 :(得分:2)
如果要更改许多网格上的所有背景,则样式是另一种方法。 尽管这是c#,但是代码很少,您可以通过在线转换器运行它。
为了快速起见,我已经在app.xaml中完成了此操作,但您希望将其放入合并在app.xaml中的适当应用程序中的资源字典中。
<Application.Resources>
<SolidColorBrush x:Key="gridBackgroundBrush" Color="Blue"/>
<Style TargetType="{x:Type Grid}">
<Setter Property="Background" Value="{DynamicResource gridBackgroundBrush}"/>
</Style>
</Application.Resources>
</Application>
您可以更改画笔:
private void Button_Click_1(object sender, RoutedEventArgs e)
{
Color colour = (Color)ColorConverter.ConvertFromString("#FFD700");
Application.Current.Resources["gridBackgroundBrush"] = new SolidColorBrush(colour);
}
如果您不希望一个或两个网格具有这种行为,则可以将其背景设置为白色或透明,这样优先于样式。
如果您的需求更复杂,那么您可能会丢失样式,而是直接将资源用作DynamicResource。这可能是克莱门斯的意思。
<Grid Background="{DynamicResource gridBackgroundBrush}"