运行时的WPF窗口边距不起作用

Posted

技术标签:

【中文标题】运行时的WPF窗口边距不起作用【英文标题】:WPF Window Margin At Runtime not working 【发布时间】:2015-09-12 06:21:57 【问题描述】:

我有WPF 窗口高度和宽度是固定的。当我在用户输入的基础上启动窗口时,我只需要在运行时使窗口的一半可见。我正在尝试如下设置边距(在Window_Loaded 方法中),但它不起作用。

this.Margin = new Thickness(0, -300, 0, 0);

下面是窗口属性:-

Height="767" Width="1032" Loaded="Window_Loaded" Closing="Window_Closing" Closed="Window_Closed" WindowState="Normal" WindowStartupLocation="CenterScreen" Background="#FFC7C7C7" ResizeMode="NoResize" WindowStyle="None"

您能帮我如何更改窗口对齐方式,使其仅显示桌面底部的一半。

我附上了一张图片,它是一个单独的窗口,其中第 1 部分需要剪切,第 2 部分将可见。 我试图改变窗口的高度,但它从底部降低了高度。它削减了第 2 部分而不是第 1 部分。

谢谢

【问题讨论】:

【参考方案1】:

在窗口内的主Grid 上设置Margin,而不是窗口的Margin

<Grid x:Name="mainGrid" >

mainGrid.Margin = new Thickness(0, -300, 0, 0);

【讨论】:

它将屏幕与顶部对齐。我希望顶部为空白。窗口应该在任务栏上方可见,并且桌面顶部将可见。【参考方案2】:
<Window .....>
   <Grid>
      <Grid.RowDefinitions>
          <RowDefinition/>        
          <RowDefinition/>
      <Grid.RowDefinitions/>
      <Grid Grid.Row="0" Name="gridpart1"> ... part 1 </Grid>
      <Grid Grid.Row="1"> ....part 2 </Grid>
   </Grid>
</Window>

并从代码中尝试将包含第一部分的网格的“可见性”属性设置为折叠。

this.gridpart1.Visibility = Visibility.Collapsed;

更新:如果您希望窗口的顶部为空白(意味着窗口大小不会缩小到大小),您可以遵循相同的模型并改用以下语句

this.gridpart1.Visibility = Visibility.Hidden;

【讨论】:

它将屏幕与顶部对齐。我希望顶部为空白。窗口应该在任务栏上方可见,并且桌面顶部将可见。 this.WindowState = WindowState.Normal; this.WindowStartupLocation=WindowStartupLocation.Manual; 以上解决了问题。

以上是关于运行时的WPF窗口边距不起作用的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式设置边距不起作用

ConstraintLayout 的问题 - 垂直边距不起作用

CollectionView 边距不一样

安卓。设置左边距/右边距不起作用

php echo html - 左边距不起作用

为啥具有 100% 宽度并显示为表格的元素有右边距不起作用?