wpf - 页面边框是在整个导航窗口周围绘制边框
问题描述
只是学习 WPF,但不确定我的页面为什么会这样。我创建了一个页面,我想在页面本身周围画一个边框。它在设计器中看起来很正确。但是当我将它推到navigationFrame 时,整个导航窗格都有边框,而不是页面。我需要这个边框就在页面周围,而不是整个navigationFrame。
<Page x:Class="com.MyBiz.MyProd.Pages.Configuration.TopLevel.AddCompany"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:com.MyBiz.MyProd.Pages.Configuration.TopLevel"
mc:Ignorable="d"
d:DesignHeight="250" d:DesignWidth="400" Margin="0,0,0,30"
Title="AddCompany">
<Border BorderBrush="Gainsboro" BorderThickness="2">
<Grid Background="Gray" Height="250" Width="400" VerticalAlignment="Bottom" HorizontalAlignment="Left" >
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="130"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StatusBar VerticalAlignment="Top"/>
<Label VerticalAlignment="Center" HorizontalAlignment="Left">Company Name</Label>
<TextBox x:Name="tbxCompanyName" Grid.Column="1" Height="30" MaxLength="100" HorizontalAlignment="Stretch" Margin="0,0,10,0"></TextBox>
<Label VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Row="1" Grid.Column="0">Contact</Label>
<TextBox x:Name="tbxContact" Grid.Column="1" Grid.Row="1" Height="30" HorizontalAlignment="Stretch" MaxLength="500" Margin="0,0,10,0"></TextBox>
<Label VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Column="0" Grid.Row="2">Address</Label>
<TextBox x:Name="tbxAddress" Grid.Column="1" Grid.Row="2" Height="30" HorizontalAlignment="Stretch" MaxLength="100" Margin="0,0,10,0"></TextBox>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Column="1" Grid.Row="3" Margin="0,0,10,0">
<Button x:Name="btnCancel" Width="40" Height="20" Background="LightGray" >
<Image Source="/Images/cancel.png" VerticalAlignment="Center" HorizontalAlignment="left"></Image>
</Button>
<Button x:Name="btnCreate" Width="40" Height="20" Background="LightGray" Margin="20,0,0,0" Click="btnCreate_Click">
<Image Source="/Images/approve.png" VerticalAlignment="Center" HorizontalAlignment="left"></Image>
</Button>
</StackPanel>
</Grid>
</Border>
</Page>
解决方案
如果你想在你的表单周围有一个边框,那Border
没关系。但是,您在您的 上设置了一个固定Width
的 ,和Height
,而不是在. 这意味着,当您的页面被放置在导航窗口中时,它会将和缩放到其完整大小,而其本身将以固定大小显示在左下角。VerticalAlignment
HorizontalAlignment
Grid
Border
Page
Border
Grid
它在设计器中如下图所示。它在您的设计器中看起来正确的唯一原因是您将设计时间设置为d:DesignHeight
与d:DesignWidth
您的 完全相同的尺寸Grid
,这意味着 thePage
和 theBorder
也具有该尺寸。如果您更改设计时大小,它看起来会有所不同。
现在,通过在页面周围绘制边框来实现什么并不完全清楚。该页面仍将缩放到其容器的大小。您可以将大小和对齐方式从 移动Grid
到Border
。然后页面仍然缩放到导航窗口的大小,您的表单将出现在左下角,但边框将在它周围,正如它应该的那样。
<Border BorderBrush="Gainsboro" BorderThickness="2" Height="250" Width="400" VerticalAlignment="Bottom" HorizontalAlignment="Left">
<Grid Background="Gray">
<!-- ...your XAML code -->
</Grid>
</Border>
您也可以完全删除尺寸和对齐方式。然后表单的大小也将调整为包含导航窗口和边框。
<Border BorderBrush="Gainsboro" BorderThickness="2">
<Grid Background="Gray">
<!-- ...your XAML code -->
</Grid>
</Border>
推荐阅读
- java - 如何为广告暴民和加载以及在活动中显示创建单独的类?
- python - 如何修复 Firestore 查询突然不起作用
- android - android 应用程序的 Xamarin nuget 包更新失败
- node.js - 如何在 React App 中使用 Active Directory 实现 SSO 身份验证?
- ios - 无法推断复杂的闭包返回类型 SwiftUI ForEach
- c# - 调用处理程序而不在 URL 上指定 ashx 文件?
- ios - 如何在 iOS 中检测应用程序强制退出事件
- c# - 查询语句问题,WHERE 附近的语法不正确
- python - 你能得到“无”的神经网络层的输出形状吗?
- git - 自定义 Git 凭证助手