我想在一个地方设置我wpf应用程序所有窗口中所有数据网格的所有窗口和样式的背景图像
我的app.xaml文件中有以下代码
<Application.Resources>
<!--Styles for woindow-->
<ImageBrush x:Key="WindowBackgroungImage" ImageSource="Icons\clinic.jpg"/>
<LinearGradientBrush x:Key="WindowBorderBrush" EndPoint="0.5,1" StartPoint="0.5,0" >
<GradientStop Color="Black" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
<!--Styles for Data Grid-->
<Style x:Key="DGCHeaderStyle" TargetType="DataGridColumnHeader">
<Setter Property="Foreground" Value="Black"/>
<Setter Property="FontSize" Value="14" />
<Setter Property="FontFamily" Value="Calibri" />
<Setter Property="FontWeight" Value="SemiBold" />
<!--<Setter Property="HorizontalAlignment" Value="Center" />-->
<Setter Property="HorizontalContentAlignment" Value="Center" />
</Style>
<LinearGradientBrush x:Key="DataGridRowBackground" EndPoint="195.5,455" StartPoint="195.5,0" MappingMode="Absolute" SpreadMethod="Repeat">
<GradientStop Color="Black" Offset="0"/>
<GradientStop Color="#FF0FC9E6" Offset="1"/>
<GradientStop Color="#FF6CA3AC"/>
</LinearGradientBrush>
<RadialGradientBrush x:Key="DataGridAlternatingRowBackground" SpreadMethod="Reflect" Center="195.5,227.5" GradientOrigin="195.5,227.5" MappingMode="Absolute" RadiusY="227.5" RadiusX="195.5">
<GradientStop Color="Black" Offset="0"/>
<GradientStop Color="#FFEEA21F" Offset="1"/>
<GradientStop Color="#FFF7F3E9"/>
</RadialGradientBrush>
<Style TargetType="DataGrid">
<Setter Property="ColumnHeaderStyle" Value="{DynamicResource DGCHeaderStyle}"/>
<Setter Property="Background" Value="{x:Null}" />
<Setter Property="HorizontalGridLinesBrush" Value="Black"/>
<Setter Property="VerticalGridLinesBrush" Value="Black"/>
<Setter Property="RowBackground" Value="{StaticResource DataGridRowBackground}"/>
<Setter Property="AlternatingRowBackground" Value="{StaticResource DataGridAlternatingRowBackground}" />
</Style>
<!--Settin window style-->
<Style TargetType="Window">
<Setter Property="BorderBrush" Value="{StaticResource WindowBorderBrush}"/>
<Setter Property="Background" Value="{StaticResource WindowBackgroungImage}"/>
</Style>
</Application.Resources>
DataGrid的样式在设计器中应用时也适用于我开始调试时 背景图像根据需要出现在visual studio的设计器中,但在调试模式下启动应用程序时,它不会显示在任何窗口中。
当我在&#39; mainwindow.xaml&#39;中添加以下行时文件背景图像显示为所需
<Window.Background>
<ImageBrush ImageSource="Icons\clinic.jpg"/>
</Window.Background>
我的项目中有一个图标文件夹,其背景图片的名称为clinic.jpg
答案 0 :(得分:4)
这不是您的ImageBrush的问题,而是您不能使用基本类型Window
在默认情况下设置任何属性。原因是您的窗口类型为MainWindow
,而非Window
。因此它不起作用。如果您提供窗口类型,则可以为该窗口设置它。
<Application.Resources>
<Style TargetType="{x:Type local:MainWindow}">
<Setter Property="BorderBrush" Value="{StaticResource WindowBorderBrush}"/>
<Setter Property="Background" Value="{StaticResource WindowBackgroungImage}"/>
</Style>
</Application.Resources>
所以基本上你必须为所有窗口类型定义样式。您可以定义一种样式,只需使用BasedOn
<Style TargetType="Window">
<Setter Property="BorderBrush" Value="{StaticResource WindowBorderBrush}"/>
<Setter Property="Background" Value="{StaticResource WindowBackgroungImage}"/>
</Style>
<Style TargetType="{x:Type local:MainWindow}"
BasedOn="{StaticResource {x:Type Window}}"/>