2010-01-19 27 views
8

Tôi đã tạo một ứng dụng không biên giới trong WPF và nó hoạt động khá tốt. Tuy nhiên, khi tôi đặt WindowState thành toàn màn hình, ứng dụng chiếm nhiều không gian hơn độ phân giải màn hình của tôi, vì vậy có một số điểm ảnh bên ngoài màn hình theo mọi hướng! (trông giống như một số lề tiêu cực được mã hóa cứng được thêm vào để ẩn đường viền mặc định)Ứng dụng cửa sổ không viền chiếm nhiều không gian hơn độ phân giải màn hình của tôi

Bất kỳ Ý tưởng nào để ngăn điều này xảy ra?

XAML của tôi:

<Window x:Class="MyApp.Shell" 
    WindowStyle="None" 
    BorderThickness="0" 
    AllowsTransparency="True" 
    Background="Transparent" 
    ResizeMode="CanResizeWithGrip" 
    WindowState="{Binding MainApplicationWindowState}" 
    ... 

Ngoài ra, một vấn đề khác tôi đã thấy là Windows toolbar/thanh công cụ được bao phủ trong tình trạng fullsize, vì vậy nó trông giống như "thực tế" height màn hình được sử dụng và không phải là "có sẵn" chiều cao màn hình, có nghĩa là chiều cao màn hình trừ thanh công cụ/thanh tác vụ của cửa sổ!

Bất kỳ ai tìm thấy giải pháp cho những vấn đề này?

Cảm ơn

Trả lời

2

tôi giải quyết vấn đề theo cách này:

XAML:

WindowStyle="None" 
Left="0" 
Top="0" 
Width="{Binding WPFSettings.Width}" 
Height="{Binding WPFSettings.Height}"> 

Visual Basic:

Public Class WPFSettings 
    Public ReadOnly Property Width() As Double 
     Get 
     Return System.Windows.SystemParameters.PrimaryScreenWidth 
     End Get 
    End Property 

    Public ReadOnly Property Height() As Double 
     Get 
     Return System.Windows.SystemParameters.PrimaryScreenHeight 
     End Get 
    End Property 
End Class 

Nó hoạt động khá tốt.

+1

Cảm ơn. Sẽ thử nó. Một vấn đề tôi thấy với PrimaryScreenHeight là khi một màn hình thứ hai được sử dụng, nhưng điều đó khá đơn giản để làm việc xung quanh! Một lưu ý; Vì bạn đang sử dụng Top và Left, điều gì về Bottom và Right? Họ sẽ di chuyển xa hơn nữa khỏi màn hình? –

+0

Hoàn hảo. Nhưng đối với tôi, nó chỉ hoạt động nếu trên đầu trang của XAML bạn đăng ở đây, tôi cũng đặt WindowState = "Maximized" –

0

Trong XAML thiết lập các ràng buộc sau trên Window.MaxHeight:

MaxHeight="{DynamicResource {x:Static SystemParameters.MaximizedPrimaryScreenHeightKey}}" 

Không cần cho một lớp tiện ích bổ sung.

+6

Nhưng nếu tôi muốn sử dụng ứng dụng của mình trên màn hình thứ hai thì sao? –

0

Trong trường hợp của tôi, thẻ XAML của Cửa sổ có thuộc tính SizeToContent = "True" và tất cả những gì tôi phải làm là xóa nó.

3

tôi tìm thấy giải pháp này lớn

<Window WindowStyle="None" WindowStartupLocation="CenterScreen" WindowState="Maximized" 
     MaxWidth="{Binding Source={x:Static SystemParameters.WorkArea}, Path=Width}" 
     MaxHeight="{Binding Source={x:Static SystemParameters.WorkArea}, Path=Height}" 
    > 
... 
</Window> 

Nhưng lỗi cho tôi vẫn còn, các cửa sổ được bù đắp bởi vài điểm ảnh trên đầu trang và để lại ... Tôi cố gắng để thiết lập Left và Top 0 sau khi tôi thay đổi trạng thái cửa sổ Nhưng không có gì xảy ra.

1

Hãy thử điều này

Width="{Binding Source={x:Static SystemParameters.WorkArea}, Path=Width}" 
Height="{Binding Source={x:Static SystemParameters.WorkArea}, Path=Height}" 
Các vấn đề liên quan