2009-02-04 11 views
6

Ho un modulo WPF che sto costruendo. Voglio specificare un'immagine di sfondo per la finestra, che è abbastanza facile. Tuttavia, voglio anche specificare un colore in modo che l'area della forma non coperta dall'immagine sia bianca. Ho visto alcuni esempi che mostrano l'utilizzo di due diversi pennelli di sfondo, ma quando provo che VS.NET mi dice che non posso avere più pennelli.combina immagine e sfondo solidcolor per un modulo WPF

Questa è la XAML che sto utilizzando

<Window x:Class="Consent.Client.Shell" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:cal="http://www.codeplex.com/CompositeWPF" 
    Title="Shell" WindowStyle="None" WindowState="Maximized" FontSize="24"> 
    <Window.Background> 
     <ImageBrush AlignmentX="Left" AlignmentY="Top" Stretch="None" TileMode="None" ImageSource="logo_header2.png" /> 
    </Window.Background> 
    <ItemsControl Background="White" VerticalAlignment="Center" cal:RegionManager.RegionName="MainRegion" > 
    </ItemsControl> 
</Window> 

Questa grande opera per l'immagine, ma lo sfondo non coperta dal immagine è in bianco. Come posso renderlo bianco? Cambiare l'immagine non è davvero un'opzione.

risposta

6

Prova questa (ho tolto tutto quello non direttamente rilevanti per la questione di fare il codice più chiaro):

<Window x:Class="Consent.Client.Shell" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Background="White"> 
    <Grid> 
     <Grid.Background> 
     <ImageBrush ImageSource="logo_header2.png" /> 
     </Grid.Background> 
     <ItemsControl> 
     </ItemsControl> 
    </Grid> 
</Window> 

in sostanza, impostare lo sfondo della finestra per il dietro il colore dell'immagine, che ha messo una griglia nella finestra e dare la griglia si immagine di sfondo, mettere tutto all'interno della griglia anziché direttamente nella finestra .

1

Non sono sicuro che sia possibile combinare i pennelli. Si potrebbe giocare con ImageBrush, o si potrebbe dimenticare il "background" e impilare gli oggetti uno sopra l'altro in una griglia:

<Window x:Class="Consent.Client.Shell" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:cal="http://www.codeplex.com/CompositeWPF" 
    Title="Shell" WindowStyle="None" WindowState="Maximized" FontSize="24"> 
    <Grid> 
     <Image Source="logo_header2.png" Stretch="None" VerticalAlignment="Top" /> 
     <ItemsControl Background="White" VerticalAlignment="Center" cal:RegionManager.RegionName="MainRegion" > 
     </ItemsControl> 
    </Grid> 
</Window> 
2

Come estensione alla risposta Nirs. Se vuoi avere margini intorno ai tuoi contenuti, ma lasciare che l'immagine di sfondo sia in grado di riempire l'intera finestra, puoi anche impilare gli sfondi usando i bordi:

<Window x:Class="Consent.Client.Shell" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Background="White"> 

    <Border Padding="10"> 
     <Border.Background> 
      <ImageBrush ImageSource="logo_header2.png" /> 
     </Border.Background> 
    <!--<Your content >--> 
    </Border> 

</Window>