2009-07-28 36 views
11

Khi tôi hiển thị cửa sổ WPF với WindowStyle="None", có vẻ tuyệt vời khi sử dụng iso.Làm cách nào để xóa đường viền của cửa sổ WPF khi sử dụng luna hoặc cổ điển?

Tuy nhiên, khi tôi sử dụng cá ngừ hoặc cổ điển, nó sẽ hiển thị đường viền màu xám xấu xí rộng khoảng 5 pixel.

Tất nhiên, nếu tôi đặt ResizeMode="NoResize", đường viền này biến mất, nhưng tôi muốn cửa sổ có thể thay đổi kích thước (ResizeMode="CanResize").

Các ứng dụng không phải WPF khác (thư trực tiếp, tức là, firefox, v.v.) không hiển thị đường viền màu xám này, nhưng vẫn có thể thay đổi kích thước.

Có cách nào để xóa đường viền này trong khi vẫn có thể thay đổi kích thước không?

Trả lời

13

Tôi đang sử dụng WPF Customizable Window's Essential Window. Dưới đây là tuyên bố cửa sổ của tôi (viết tắt):

<CustomWindow:EssentialWindow 
     xmlns:aero="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero" 
     xmlns:CustomWindow="clr-namespace:CustomWindow;assembly=CustomWindow" 
     AllowsTransparency="True" Background="Transparent" 
     ResizeMode="CanResizeWithGrip" 
     WindowStyle="None" 
     ShowInTaskbar="True" > 
+0

Điều đó trông giống như một dự án tuyệt vời. Tôi chưa bao giờ nghe nói về nó trước đây. –

+0

Cảm ơn con trỏ. Thư viện này thực sự khá tuyệt. –

+0

Dự án rất tuyệt, nhưng có một số vấn đề như cửa sổ che thanh tác vụ khi phóng to. Sử dụngMicrosoft WPF Shell Integration Library thay vì http://archive.msdn.microsoft.com/WPFShell –

10

Thử đặt AllowsTransparency thành True trên cửa sổ.

+0

Điều này cho mẹo. Đó không phải là câu trả lời mặc dù AllowTransparency = true vô hiệu hóa thay đổi kích thước. –

+1

Có, bạn bị mất kích thước từ các cạnh cửa sổ, nhưng bạn vẫn có thể thay đổi kích cỡ bằng tay cầm. Bạn có thể xử lý thay đổi kích thước từ các cạnh wnidow chính mình, nếu bạn quan tâm tôi có thể đăng các mã. –

+1

@JohnMyczek bạn có thể đăng mã thay đổi kích thước cửa sổ khi AllowTransparency được đặt thành True không? – Tomas

4

Tôi tìm thấy câu trả lời hay hơn. Không cần phải lộn xộn xung quanh với ResizeMode. Không cần cho các cuộc gọi interop. Không cần phải đặt AllowTransparency có thể có tác dụng phụ.

<WindowChrome.WindowChrome> 
<WindowChrome CaptionHeight="0" ResizeBorderThickness="5" /> 
</WindowChrome.WindowChrome> 

tôi lấy câu trả lời này từ chủ đề này: How to create a WPF Window without a border that can be resized via a grip only?

tôi repost nó ở đây cho những người hạ cánh ở đây tìm kiếm google.

+2

Câu trả lời hay nhất! Với hỗ trợ winformshost –

Các vấn đề liên quan