这可能是一个有点愚蠢的问题,但我不确定还有什么可以尝试,所以想要求一些帮助。我的问题是在Silverlight中锚定控件。
我有一个坐在控件中的网格(C1FlexGrid)。控件在页面中使用,我只想让网格大小由浏览器窗口的大小决定。我希望它具有最小尺寸,但允许它在用户展开浏览器窗口时纵向和横向扩展。在WinForms中(这是我习惯的)这很容易。
然而,在Silverlight中它让我头疼。是否有可能让它按照我想要的方式行事?
我已将控件宽度和高度设置为auto,并指定了一些设计宽度/高度。然后将用户控件放在页面上,控件和页面宽度/高度都设置为自动。
当网格加载其数据时,几百行,它会根据有200行的事实自动调整网格大小,即变得非常长。
修改
以下是一个简单例子中的一些XAML:
<navigation:Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
xmlns:c1="http://schemas.componentone.com/winfx/2006/xaml" x:Class="Optimize.Client.Presentation.AboutView"
mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480"
Title="About"
x:Name="AboutPage"
Style="{StaticResource PageStyle}">
<Grid x:Name="LayoutRoot" Background="White" MinWidth="300" MinHeight="300">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<c1:C1FlexGrid Margin="10" BorderBrush="Red" BorderThickness="1" Width="Auto" Height="Auto" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
<c1:C1FlexGrid.Columns>
<c1:Column Header="User Group" Width="*" />
</c1:C1FlexGrid.Columns>
</c1:C1FlexGrid>
</Grid>
</navigation:Page>
我想要的只是页面上的网格。该页面的最小尺寸为300x300。当浏览器窗口展开时,我希望页面随之展开,并且网格也随之展开,以便网格的所有边框从顶部/底部/左侧/右侧为10。我已经尝试为布局网格的宽度/高度指定*,但它仍然不起作用。
由于
答案 0 :(得分:0)
Auto
调整大小意味着“请调整我的内容”。这不会限制您使用父控件或浏览器的大小。
您想要Star
(*)大小调整,这基本上意味着“扣除任何固定或自动列/行后,请根据星号的比例在任何星大小的列/行之间分配剩余空间”。
您还希望容器指定HorizontalAlignment =“Stretch”和VerticalAlignment =“Stretch”,以便可以确定分配给星号列/行的空间量(否则它将自行折叠)。
如果您可以发布XAML,我可以更具体。