Silverlight - Layout Dinâmico

o Canvasé o menos interessante de todos os painéis de layout do Silverlight. Os outros painéis permitemDynamic Layouts, o que significa que os layouts podem se adaptar conforme o número de itens exibidos muda, ou o tamanho das informações exibidas varia, ou se a quantidade de espaço disponível para o aplicativo muda porque o usuário redimensionou o navegador.

Silverlight oferece dois painéis com estratégias de layout dinâmico.

  • StackPanel - que organiza os elementos em uma pilha vertical ou horizontal.

  • Grid - que fornece um sistema de layout flexível em forma de grade ou de mesa.

Stack Panel

O painel de pilha é um painel de layout simples e útil em XAML. DentroStack Panel, os elementos filho podem ser organizados em uma única linha horizontal ou verticalmente com base em sua propriedade de orientação. Geralmente é usado sempre que qualquer tipo de lista precisa ser criado. ItemsControls usam painéis de pilha.Menu, ListBox e ComboBox são o painel de layout interno padrão.

Dada a seguir são os comumente usados properties do StackPanel.

Sr. Não. Descrição da Propriedade
1

Background

Obtém ou define um pincel que preenche a área de conteúdo do painel. (Herdado do painel)

2

Children

Obtém um UIElementCollection de elementos filho deste painel. (Herdado do painel.)

3

Height

Obtém ou define a altura sugerida do elemento. (Herdado de FrameworkElement.)

4

ItemHeight

Obtém ou define um valor que especifica a altura de todos os itens contidos em um WrapPanel.

5

ItemWidth

Obtém ou define um valor que especifica a largura de todos os itens contidos em um WrapPanel.

6

LogicalChildren

Obtém um enumerador que pode iterar os elementos filhos lógicos deste elemento Panel. (Herdado do painel.)

7

LogicalOrientation

A orientação do painel, se o painel suportar layout em apenas uma dimensão. (Herdado do painel.)

8

Margin

Obtém ou define a margem externa de um elemento. (Herdado de FrameworkElement.)

9

Name

Obtém ou define o nome de identificação do elemento. O nome fornece uma referência para que o code-behind, como o código do manipulador de eventos, possa se referir a um elemento de marcação depois de ser construído durante o processamento por um processador XAML. (Herdado de FrameworkElement.)

10

Orientation

Obtém ou define um valor que especifica a dimensão na qual o conteúdo filho é organizado.

11

Parent

Obtém o elemento pai lógico deste elemento. (Herdado de FrameworkElement.)

12

Resources

Obtém ou define o dicionário de recursos definido localmente. (Herdado de FrameworkElement.)

13

Style

Obtém ou define o estilo usado por este elemento quando ele é renderizado. (Herdado de FrameworkElement.)

14

Width

Obtém ou define a largura do elemento. (Herdado de FrameworkElement.)

O exemplo a seguir mostra como adicionar elementos filho a um StackPanel. A seguir está a implementação XAML em queButtons são criados dentro de um StackPanel com algumas propriedades.

<UserControl x:Class = "DynamicLayout.MainPage" 
   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" 
   mc:Ignorable = "d" 
   d:DesignHeight = "300" d:DesignWidth = "400"> 
    
   <Grid x:Name = "LayoutRoot" Background = "White"> 
      <StackPanel>
         <Button x:Name = "button" Content = "Button" Margin = "10" /> 
         <Button x:Name = "button1" Content = "Button" Margin = "10"/> 
         <Button x:Name = "button2" Content = "Button" Margin = "10"/> 
         <Button x:Name = "button3" Content = "Button" Margin = "10"/> 
      </StackPanel>  
   </Grid> 
	
</UserControl>

Quando o código acima for compilado e executado, você verá a seguinte saída.

O StackPanel tenta fazer com que cada elemento tenha o espaço necessário na direção do empilhamento.

Agora, se você redimensionar o navegador, verá que a largura dos botões também mudou.

Rede

O painel de grade fornece uma área flexível, que consiste em linhas e colunas. DentroGrid, os elementos filhos podem ser organizados em forma tabular. Um elemento pode ser adicionado a qualquer linha e coluna específica usandoGrid.Row e Grid.Columnpropriedades. Por padrão, oGridO painel é criado com uma linha e uma coluna. Várias linhas e colunas são criadas porRowDefinitions e ColumnDefinitionspropriedades. A altura das linhas e a largura das colunas podem ser definidas das seguintes três maneiras -

  • Fixed value - Para atribuir um tamanho fixo de unidades lógicas (1/96 polegada).

  • Auto - Ele ocupará o espaço necessário para os controles nessa linha / coluna específica.

  • Star (*) - Vai ocupar o espaço restante quando Auto e fixed sized estão preenchidos.

Dada a seguir são os comumente usados properties do Grid classe.

Sr. Não. Descrição da Propriedade
1

Background

Obtém ou define um pincel que preenche a área de conteúdo do painel. (Herdado do painel)

2

Children

Obtém um UIElementCollection de elementos filho deste painel. (Herdado do painel.)

3

ColumnDefinitions

Obtém uma lista de objetos ColumnDefinition definidos nesta instância de Grid.

4

Height

Obtém ou define a altura sugerida do elemento. (Herdado de FrameworkElement.)

5

ItemHeight

Obtém ou define um valor que especifica a altura de todos os itens contidos em um WrapPanel.

6

ItemWidth

Obtém ou define um valor que especifica a largura de todos os itens contidos em um WrapPanel.

7

Margin

Obtém ou define a margem externa de um elemento. (Herdado de FrameworkElement.)

8

Name

Obtém ou define o nome de identificação do elemento. O nome fornece uma referência para que o code-behind, como o código do manipulador de eventos, possa se referir a um elemento de marcação depois de ser construído durante o processamento por um processador XAML. (Herdado de FrameworkElement.)

9

Orientation

Obtém ou define um valor que especifica a dimensão na qual o conteúdo filho é organizado.

10

Parent

Obtém o elemento pai lógico deste elemento. (Herdado de FrameworkElement.)

11

Resources

Obtém ou define o dicionário de recursos definido localmente. (Herdado de FrameworkElement.)

12

RowDefinitions

Obtém uma lista de objetos RowDefinition definidos nesta instância de Grid.

13

Style

Obtém ou define o estilo usado por este elemento quando ele é renderizado. (Herdado de FrameworkElement.)

14

Width

Obtém ou define a largura do elemento. (Herdado de FrameworkElement.)

Dada a seguir são os comumente usados methods do Grid classe.

Sr. Não. Método e Descrição
1

GetColumn

Obtém o valor da propriedade anexada Grid.Column XAML do FrameworkElement especificado.

2

GetColumnSpan

Obtém o valor da propriedade anexada Grid.ColumnSpan XAML do FrameworkElement especificado.

3

GetRow

Obtém o valor da propriedade anexada Grid.Row XAML do FrameworkElement especificado.

4

SetColumn

Define o valor da propriedade XAML anexada Grid.Column no FrameworkElement especificado.

5

SetRow

Define o valor da propriedade anexada Grid.Row XAML no FrameworkElement especificado.

6

SetRowSpan

Define o valor da propriedade anexada Grid.RowSpan XAML no FrameworkElement especificado.

O exemplo a seguir mostra como adicionar os elementos filho em uma grade para especificá-lo em uma forma tabular. A seguir, é fornecida a implementação XAML na qual alguns elementos da interface do usuário são adicionados.

<UserControl x:Class = "DynamicLayout.MainPage" 
   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" 
   mc:Ignorable = "d" 
   d:DesignHeight = "300" d:DesignWidth = "400">  
   
   <Grid x:Name = "LayoutRoot" Background = "White"> 
	
      <Grid.ColumnDefinitions> 
         <ColumnDefinition Width = "130" /> 
         <ColumnDefinition Width = "1*" /> 
         <ColumnDefinition Width = "2*" /> 
      </Grid.ColumnDefinitions>
		
      <Grid.RowDefinitions> 
         <RowDefinition Height = "Auto" /> 
         <RowDefinition Height = "50" /> 
      </Grid.RowDefinitions>  
		
      <TextBlock Grid.Column = "0" Grid.Row = "0" 
         Text = "Content that no longer fits, not even close here" 
         TextWrapping = "Wrap" /> 
			
      <Button Grid.Column = "1" Grid.Row = "0" Content = "OK" />  
      <Ellipse Grid.Column = "1" Grid.Row = "1"  Fill = "Aqua" /> 
      <Rectangle Grid.Column = "2" Grid.Row = "1" Fill = "Orchid" RadiusX = "20" RadiusY = "20" />  
		
   </Grid> 
	
</UserControl>

A primeira coluna é definida para um tamanho fixo. Qualquer elemento nesta coluna terá essa largura.Grid.Column e Grid.Row As propriedades especificam em qual linha e coluna esses itens estão, e essas são propriedades baseadas em 0.

A segunda ou terceira colunas têm uma largura de 1* e 2*. Isso significa que eles dividem o espaço que sobra depois que as colunas fixas e de largura automática ocupam seu espaço. O significado do1 e 2 aqui é que o 2* coluna recebe o dobro de espaço do 1* coluna.

Quando o código acima for executado, você verá a seguinte saída.

Quando você redimensiona o aplicativo, o conteúdo dessas duas colunas é redimensionado para corresponder. A propósito, o valor absoluto de uma linha ou coluna do tamanho de uma estrela não importa; são apenas as proporções que são importantes.