我有一个WindowState="Maximized"
的窗口(如果重要的话也是AllowsTransparency="True" Background="Transparent" WindowStyle="None"
)并且窗口左上角有一个Image
元素。
但是实际的窗口。左侧位置= -8和window.Top = -8。
因此我的图像被裁剪为该值。
我做了这样的黑客以避免这个:
image1.Margin = new Thickness(-this.Left - 1, -this.Top - 1, 0, 0);
但是你可以看到它看起来很奇怪。将元素放在屏幕左上角的真实中的正确方法是什么?
答案 0 :(得分:1)
我无法重现您的问题。
这是我试过的:
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
WindowState="Maximized">
<Grid>
<Image Source="E:\testImages\test.bmp" Stretch="None" VerticalAlignment="Top" HorizontalAlignment="Left" />
</Grid>
</Window>
实际上,窗口的位置为(-8,-8),这是正常的,因为这是MS Windows“隐藏”窗口边界的方式......
但这意味着窗口的内容完美贴合屏幕,不会被裁剪,我的图像确实完全显示,并且完全对齐在屏幕的左侧和标题栏的右上方,没有进一步的麻烦。 / p>
如果我添加你的Hack,图像会得到给定的边距,这会使它从屏幕左侧开8px,从标题栏向下8xpx。
所以要么我错过了一些信息,要么你的问题不在那里
修改强> 的 我尝试了评论中链接的示例项目,发现问题在于窗口中的“allowsTransparency”设置为true。
为什么它表现得像这样,我不知道......
答案 1 :(得分:1)
您可以设置一个样式触发器,在窗口最大化时添加边距
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
WindowState="Maximized"
AllowsTransparency="True"
WindowStyle="None" name="Window1">
<Grid>
<Grid.Style>
<Style TargetType="{x:Type Grid}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=Window1, Path=WindowState}" Value="Maximized">
<Setter Property="Margin" Value="5"/> // set your own values
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<Image Source="E:\testImages\test.bmp" Stretch="None" VerticalAlignment="Top" HorizontalAlignment="Left" />
</Grid>
答案 2 :(得分:0)
尝试使用ViewBox。像这样:
<ViewBox>
<Grid>
<Image ..../>
</Grid>
</ViewBox>
ViewBox将自动调整为图像大小,因此不会裁剪图像。