目前,当我制作用户界面时,我会根据屏幕尺寸将控件的所有边距和大小设置为固定大小。有没有办法动态调整大小或边距与屏幕大小成比例,因此不需要每次都在XAML中设置属性。
我目前的知识告诉我,我可以设置固定宽度&样式或模板中的高度或使用的每个布局中的高度。
答案 0 :(得分:3)
我会说重新思考你的方法。不要使用边距绝对定位元素,而是使用正确的面板,以便根据容器的大小正确地重新定位和拉伸元素。
WPF中有许多面板支持不同的布局,可以动态自动布局元素,例如StackPanel
用于堆叠,WrapPanel
用于包装,请参阅此处的面板概述:http://msdn.microsoft.com/en-us/library/ms754152(v=vs.110).aspx
e.g。
而不是:
<Grid>
<Label Content="Name:" Margin="92,320,0,0"/>
<TextBox Text="enter your name..." Margin="124,320,0,0"/>
</Grid>
使用:
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="Name:" Grid.Column="0"/>
<TextBox Text="enter your name..." Grid.Column="1"/>
</Grid>
然后使用Margin
来提供元素空间,而不是位置,例如保证金为5。
答案 1 :(得分:1)
不确定这是否是您要找的。但我所做的是将主窗口的大小设置为客户端监视器大小的80%。
public void SetPage(Page currentPage)
{
currentPage.Tag = this; //Set the new page's Tag to 'this' so we can reference it from within.
_mainFrame.Navigate(currentPage);
double height = System.Windows.SystemParameters.PrimaryScreenHeight;
double width = System.Windows.SystemParameters.PrimaryScreenWidth;
//set the size of the window to 80% of the client monitor
this.Height = (80.0 / 100.0) * height;
this.Width = (80.0 / 100.0) * width;
WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
}