2010-02-21 87 views
4

佈置以下項目的最佳做法是什麼?WPF/Silverlight佈局最佳實踐

Valid XHTML http://www.hughgrice.com/layout.gif

我特別感興趣的是我應該使用哪些控件,以及如何將刪除圖標定位在右側,並且工具圖標始終顯示在中間?

在此先感謝。

+0

我來是混合WPF Silverlight的問題往往是一個壞主意的結論。如果你使用的是WPF,DockPanel,這裏顯然有一個正確的答案。當使用Silverlight – AnthonyWJones 2010-02-21 19:25:21

回答

5

我對這種情況下的優選面板是DockPanel中,而不是一個網格:

<DockPanel> 
    <Button>Add</Button> 
    <Label>This is a label</Label> 
    <Button DockPanel.Dock="Right">Del</Button> 
    <Button HorizontalAlignment="Center">Setting</Button> 
</DockPanel> 
+1

DockPanel在Silverlight中並不存在,儘管它在工具包中可用。如果您有其他原因需要包含工具包控件,我會同意DockPanel更好地描述這個意圖。 – AnthonyWJones 2010-02-21 19:20:17

+1

你是對的Silverlight,但因爲我不能沒有DockPanel我從工具包中提取它。這樣我就避免了完全加載工具包。 – Mart 2010-02-21 19:26:13

3

如何:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="Auto" /> 
    </Grid.ColumnDefinitions> 

    <Image Source="Plusbutton" /> 
    <Label Text="This is a Label" Margin="3,0,3,0" Grid.Column="1" /> 
    <Image Source="Gear" HorizontalAlignment="Center" Grid.Column="2" /> 
    <Image Source="Minusbutton" Margin ="3,0,3,0" Grid.Column="3" /> 
</Grid> 
+1

時,答案並不是那麼清楚,但爲了清晰起見,我建議添加Grid.Column =「0」。 – Josh 2010-02-21 19:13:59

+2

爲什麼總是使用網格進行佈局?與DockPanel相比,它沒有任何好處。 – Mart 2010-02-21 19:18:32

+1

無論如何,在Silverlight中,Grid並不需要一個醜陋的XAML名稱空間前綴,如:等。當它最終成爲主要控制組希望這個醜陋會消失。 – Josh 2010-02-21 19:37:56

3

Grid,給這個: -

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 
    <StackPanel HorizontalAlignment="Left" Grid.Column="0"> 
    <!-- Your content here --> 
    </StackPanel> 
    <StackPanel HorizontalAlignment="Center" Grid.Column="1"> 
    <!-- Your content here --> 
    </StackPanel> 
    <StackPanel HorizontalAlignment="Right" Grid.Column="2"> 
    <!-- Your content here --> 
    </StackPanel> 
</Grid> 

這種方法從內容本身解耦左,中,右內容的基本格式。在你的例子中,左邊的StackPanel將有兩個項目。每個面板的內容只需要關心其相對於面板中其他兄弟項目的佈局。

+1

好,但我會建議添加Grid.Column =「0」爲清晰。 – Josh 2010-02-21 19:14:23

+0

@Josh:加入以減輕你的美感。 ;) – AnthonyWJones 2010-02-21 19:16:46

+0

大聲笑我知道當談到XAML時,我感到非常痛苦。 – Josh 2010-02-21 19:36:08