2009-02-04 2 views
6

Tôi có biểu mẫu WPF mà tôi đang xây dựng. Tôi muốn chỉ định một hình nền cho cửa sổ, điều đó là đủ dễ dàng. Tuy nhiên, tôi cũng muốn chỉ định một màu để khu vực của biểu mẫu không được bao phủ bởi hình ảnh có màu trắng. Tôi đã nhìn thấy một số ví dụ cho thấy bằng cách sử dụng hai nền tảng khác nhau bàn chải, nhưng khi tôi cố gắng mà VS.NET nói với tôi tôi không thể có nhiều bàn chải.kết hợp hình ảnh và nền màu cho Biểu mẫu WPF

Đây là XAML Tôi đang sử dụng

<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> 

này hoạt động tuyệt vời cho hình ảnh, nhưng nền không nằm trong hình ảnh là màu đen. Làm thế nào để làm cho nó trắng? Thay đổi hình ảnh chính nó không thực sự là một lựa chọn.

Trả lời

6

Hãy thử điều này (Tôi đã gỡ bỏ tất cả mọi thứ không liên quan trực tiếp đến câu hỏi để làm cho mã rõ ràng hơn):

<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> 

về cơ bản, thiết lập nền của cửa sổ vào phía sau màu sắc hình ảnh, hơn đặt một lưới trong cửa sổ và cung cấp cho lưới bạn hình nền, đặt tất cả mọi thứ bên trong lưới thay vì trực tiếp trong cửa sổ .

1

Tôi không chắc chắn bạn có thể kết hợp bàn chải. Bạn có thể chơi xung quanh với ImageBrush, hoặc bạn có thể quên đi những "nền" và ngăn xếp các mục trên lên nhau trong một Lưới:

<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

Là phần mở rộng cho câu trả lời Nirs. Nếu bạn muốn có lề xung quanh nội dung của mình, nhưng để hình nền có thể lấp đầy toàn bộ cửa sổ, bạn cũng có thể chồng nền bằng đường viền:

<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>