Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um Expander controle fornece uma maneira de fornecer conteúdo em uma área expansível que se assemelha a uma janela e inclui um cabeçalho.
Criando um ampliador simples
O exemplo a seguir mostra como criar um controle simples Expander . Este exemplo cria um Expander que se parece com a ilustração anterior.
<Expander Name="myExpander" Background="Tan"
HorizontalAlignment="Left" Header="My Expander"
ExpandDirection="Down" IsExpanded="True" Width="100">
<TextBlock TextWrapping="Wrap">
Lorem ipsum dolor sit amet, consectetur
adipisicing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua
</TextBlock>
</Expander>
O Content e Header de um Expander também pode conter conteúdo complexo, como RadioButton e Image objetos.
Definindo a direção da área de conteúdo em expansão
Você pode definir a área de conteúdo de um controle Expander para expandir em uma das quatro direções (Down, Up, Left ou Right) usando a propriedade ExpandDirection. Quando a área de conteúdo é recolhida, apenas o ExpanderHeader e o botão de alternância aparecem. Um Button controle que exibe uma seta direcional é usado como botão para alternar entre expandir ou recolher a área de conteúdo. Quando expandido, o Expander tenta exibir todo o seu conteúdo em uma área semelhante a uma janela.
Controlando o tamanho de um expansor em um painel
Se um Expander controle estiver dentro de um controle de layout que herda de Panel, tal como StackPanel, não especifique um Height no Expander quando a propriedade ExpandDirection estiver definida para Down ou Up. Da mesma forma, não especifique um Width no Expander quando a propriedade ExpandDirection estiver definida como Left ou Right.
Quando você define uma dimensão de tamanho em um Expander controle na direção do controle em que o conteúdo expandido é exibido, o Expander assume o controle da área utilizada pelo conteúdo e exibe uma borda ao redor dela. A borda aparece mesmo quando o conteúdo é recolhido. Para definir o tamanho da área de conteúdo expandida, defina as dimensões de tamanho no conteúdo do Expander, ou, se desejar a capacidade de rolagem, defina no ScrollViewer que engloba o conteúdo.
Quando um Expander controle é o último elemento em um DockPanel, o Windows Presentation Foundation (WPF) define automaticamente as Expander dimensões como iguais à área restante do DockPanel. Para evitar esse comportamento padrão, defina a propriedade LastChildFill no objeto DockPanel para false
, ou certifique-se de que o Expander não seja o último elemento em um DockPanel.
Criando conteúdo rolável
Se o conteúdo for muito grande para o tamanho da área de conteúdo, você poderá encapsular o conteúdo de um Expander em um ScrollViewer para fornecer conteúdo rolável. O controle Expander não fornece automaticamente a capacidade de rolagem. A ilustração a seguir mostra um Expander controle que contém um ScrollViewer controle.
Expansor em um ScrollViewer
Quando você colocar um Expander controle em um ScrollViewer, defina a propriedade de ScrollViewer dimensão que corresponde à direção na qual o Expander conteúdo é aberto para o tamanho da área de Expander conteúdo. Por exemplo, se você definir a propriedade ExpandDirection no Expander para Down (a área de conteúdo abre para baixo), defina a propriedade Height no controle ScrollViewer para a altura necessária para a área de conteúdo. Se, em vez disso, você definir a dimensão de altura no próprio conteúdo, ScrollViewer não reconhecerá essa configuração e, portanto, não fornecerá conteúdo rolável.
O exemplo a seguir mostra como criar um Expander controle que tem conteúdo complexo e que contém um ScrollViewer controle. Este exemplo cria uma Expander ilustração semelhante ao início desta seção.
void MakeExpander()
{
//Create containing stack panel and assign to Grid row/col
StackPanel sp = new StackPanel();
Grid.SetRow(sp, 0);
Grid.SetColumn(sp, 1);
sp.Background = Brushes.LightSalmon;
//Create column title
TextBlock colTitle = new TextBlock();
colTitle.Text = "EXPANDER CREATED FROM CODE";
colTitle.HorizontalAlignment= HorizontalAlignment.Center;
colTitle.Margin.Bottom.Equals(20);
sp.Children.Add(colTitle);
//Create Expander object
Expander exp = new Expander();
//Create Bullet Panel for Expander Header
BulletDecorator bp = new BulletDecorator();
Image i = new Image();
BitmapImage bi= new BitmapImage();
bi.UriSource = new Uri(@"pack://application:,,/images/icon.jpg");
i.Source = bi;
i.Width = 10;
bp.Bullet = i;
TextBlock tb = new TextBlock();
tb.Text = "My Expander";
tb.Margin = new Thickness(20,0,0,0);
bp.Child = tb;
exp.Header = bp;
//Create TextBlock with ScrollViewer for Expander Content
StackPanel spScroll = new StackPanel();
TextBlock tbc = new TextBlock();
tbc.Text =
"Lorem ipsum dolor sit amet, consectetur adipisicing elit," +
"sed do eiusmod tempor incididunt ut labore et dolore magna" +
"aliqua. Ut enim ad minim veniam, quis nostrud exercitation" +
"ullamco laboris nisi ut aliquip ex ea commodo consequat." +
"Duis aute irure dolor in reprehenderit in voluptate velit" +
"esse cillum dolore eu fugiat nulla pariatur. Excepteur sint" +
"occaecat cupidatat non proident, sunt in culpa qui officia" +
"deserunt mollit anim id est laborum.";
tbc.TextWrapping = TextWrapping.Wrap;
spScroll.Children.Add(tbc);
ScrollViewer scr = new ScrollViewer();
scr.Content = spScroll;
scr.Height = 50;
exp.Content = scr;
exp.Width=200;
exp.HorizontalContentAlignment= HorizontalAlignment.Stretch;
//Insert Expander into the StackPanel and add it to the
//Grid
sp.Children.Add(exp);
myGrid.Children.Add(sp);
}
Sub MakeExpander()
'Create containing stack panel and assign to Grid row/col
Dim sp As StackPanel = New StackPanel()
Grid.SetRow(sp, 0)
Grid.SetColumn(sp, 1)
sp.Background = Brushes.LightSalmon
'Create column title
Dim colTitle As TextBlock = New TextBlock()
colTitle.Text = "EXPANDER CREATED FROM CODE"
colTitle.HorizontalAlignment = HorizontalAlignment.Center
colTitle.Margin.Bottom.Equals(20)
sp.Children.Add(colTitle)
'Create Expander object
Dim exp As Expander = New Expander()
'Create Bullet Panel for Expander Header
Dim bp As BulletDecorator = New BulletDecorator()
Dim i As Image = New Image()
Dim bi As BitmapImage = New BitmapImage()
bi.UriSource = New Uri("pack://application:,,./images/icon.jpg")
i.Source = bi
i.Width = 10
bp.Bullet = i
Dim tb As TextBlock = New TextBlock()
tb.Text = "My Expander"
tb.Margin = New Thickness(20, 0, 0, 0)
bp.Child = tb
exp.Header = bp
'Create TextBlock with ScrollViewer for Expander Content
Dim spScroll As StackPanel = New StackPanel()
Dim tbc As TextBlock = New TextBlock()
tbc.Text = _
"Lorem ipsum dolor sit amet, consectetur adipisicing elit," + _
"sed do eiusmod tempor incididunt ut labore et dolore magna" + _
"aliqua. Ut enim ad minim veniam, quis nostrud exercitation" + _
"ullamco laboris nisi ut aliquip ex ea commodo consequat." + _
"Duis aute irure dolor in reprehenderit in voluptate velit" + _
"esse cillum dolore eu fugiat nulla pariatur. Excepteur sint" + _
"occaecat cupidatat non proident, sunt in culpa qui officia" + _
"deserunt mollit anim id est laborum."
tbc.TextWrapping = TextWrapping.Wrap
spScroll.Children.Add(tbc)
Dim scr As ScrollViewer = New ScrollViewer()
scr.Content = spScroll
scr.Height = 50
exp.Content = scr
'Insert Expander into the StackPanel and add it to the
'Grid
exp.Width = 200
exp.HorizontalContentAlignment = HorizontalAlignment.Stretch
sp.Children.Add(exp)
myGrid.Children.Add(sp)
End Sub
<Expander Width="200" HorizontalContentAlignment="Stretch">
<Expander.Header>
<BulletDecorator>
<BulletDecorator.Bullet>
<Image Width="10" Source="images\icon.jpg"/>
</BulletDecorator.Bullet>
<TextBlock Margin="20,0,0,0">My Expander</TextBlock>
</BulletDecorator>
</Expander.Header>
<Expander.Content>
<ScrollViewer Height="50">
<TextBlock TextWrapping="Wrap">
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua. Ut enim ad minim veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia
deserunt mollit anim id est laborum.
</TextBlock>
</ScrollViewer>
</Expander.Content>
</Expander>
Usando as propriedades de alinhamento
Você pode alinhar o conteúdo definindo as propriedades HorizontalContentAlignment e VerticalContentAlignment no controle Expander. Quando você define essas propriedades, o alinhamento se aplica ao cabeçalho e também ao conteúdo expandido.
Consulte também
.NET Desktop feedback