2012-07-03 23 views
1

這可能有點愚蠢的問題,但我不知道還有什麼其他的嘗試,所以想尋求一些幫助。我的問題是在Silverlight中錨定控件。在Silverlight中控制錨定

我有一個坐在控件中的網格(C1FlexGrid)。該控件用於頁面,我只是希望網格大小由瀏覽器窗口的大小決定。我希望它有一個最小尺寸,但允許它在用戶擴展瀏覽器窗口時縱向和橫向擴展。在WinForms(這是我習慣的)這很容易。

但是,在Silverlight中它讓我頭疼。是否有可能讓它按照我想要的方式行事?

我已經將控制寬度和高度設置爲自動,並指定了一些設計寬度/高度。然後將用戶控件放置到頁面上,並將控件和頁面寬度/高度均設置爲自動。

當網格加載其數據,幾百行時,它會根據事實自動調整網格大小爲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

當你說網格,你的意思是DataGrid,或網格?你可以發佈你的xaml嗎? –

回答

0

Auto大小的意思是 「請調整我對我的內容」。這不會將您限制爲父級控件或瀏覽器的大小。

你想要Star(*)的大小,其基本意思是「扣除任何固定或自動列/行後,請根據星形大小的比例將剩餘空間分配到任何星形大小的列/行中」。

您還希望容器指定Horizo​​ntalAlignment =「Stretch」和VerticalAlignment =「Stretch」,以便可以確定分配給星形大小的列/行的空間量(否則它將自行崩潰)。

如果您可以發佈您的XAML,我可以更具體。

+0

嗨 - 謝謝你的回覆。我已經嘗試將*尺寸設置爲網格的尺寸(c1flexgrid控件),並且它抱怨「無法將字符串設置爲長度」。 C1flexgrid在一個堆棧中,這也不會讓我應用*尺寸(它也是呻吟)。用戶控制本身(包含堆棧面板和網格)也不喜歡*大小。我設法應用它的唯一地方是在根佈局的rowdefinition中,但這沒有什麼區別。我會嘗試製作一個簡化的示例併發布XAML。 – rockshire

+0

嗨HiTech Magic,我已經發布了一些簡化的XAML來說明問題。如果你能看到它,我真的很感激它,因爲我真的被困在這一個。乾杯...... – rockshire