Ho un WrapPanel e i pulsanti vengono creati e aggiunti a livello di programmazione come figli del WrapPanel. Quindi, voglio mostrare la barra di scorrimento verticale quando WrapPanel è pieno di pulsanti (bambini) per poter aggiungere più pulsanti in modo continuo.Come rendere WrapPanel per mostrare la barra di scorrimento verticale quando i bambini sono pieni con o senza ScrollViewer
Se è necessaria una barra di scorrimento, è necessario portare ScrollViewer? Non c'è un modo senza ScrollViewer? Quello che voglio ottenere è che, poiché WrapPanel è di piccole dimensioni, voglio che una barra di scorrimento sia mostrata solo quando serve (come piena di bambini).
Il mio codice è semplice, come di seguito (WrapPanel all'interno Grid e la griglia si trova all'interno TabControl)
Grazie sempre per la vostra eccellenza.
Aggiornamento: Ho faticato a trovare soluzioni su Internet anche per diversi giorni. E ho provato a mettere WrapPanel all'interno di ScrollViewer. Tuttavia, sebbene abbia impostato VerticalScroll su Auto, la barra di scorrimento verticale viene sempre visualizzata anche quando WrapPanel non ha figli.
Inoltre, quando creo intenzionalmente WrapPanel di pulsanti (pulsanti), la barra di scorrimento verticale di ScrollViewer non fornisce la disponibilità di scorrimento. E i pulsanti nella riga inferiore di WrapPanel mostrati tagliati e altro, non riesco a scorrere verso il basso per vedere oltre il pulsante nella riga inferiore. Ho fatto in modo che i pulsanti venissero posizionati oltre la linea di fondo di WrapPanel intenzionalmente.
Con o senza, voglio che la barra di scorrimento verticale venga visualizzata quando è solo necessaria (piena di bambini). Sembra molto facile da fare. Ma è difficile farlo funzionare correttamente.
Soluzione: è stato fornito da Sig Henk Holterman
<DropShadowEffect/>
</Button.Effect>
</Button>
<WrapPanel x:Name="WrapPanelGreen" HorizontalAlignment="Left" Height="180" VerticalAlignment="Top" Width="232" UseLayoutRounding="True" ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Auto"/>
</Grid>
</TabItem>
</TabControl>
E sotto è il mio semplice codice che fa il tasto di programmazione e aggiungere come figlio di WrapPanel.
for (int k = 0; k < Overviews.Length; k++)
{
Button btnoverviewcontent = new Button();
ToolTip tt = new ToolTip();
tt.Content = "Press this button if you want to modify or delete.";
btnoverviewcontent.ToolTip = tt;
btnoverviewcontent.Cursor = Cursors.Hand;
SolidColorBrush mySolidColorBrush = new SolidColorBrush();
mySolidColorBrush.Color = Color.FromArgb(255, 101, 173, 241);
btnoverviewcontent.Background = mySolidColorBrush;
btnoverviewcontent.Effect = new DropShadowEffect
{
Color = new Color { A = 255, R = 0, G = 0, B = 0 },
Direction = 315,
ShadowDepth = 5,
Opacity = 1
};
btnoverviewcontent.Padding = new Thickness(3, 3, 3, 3);
btnoverviewcontent.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Stretch;
TextBlock textBlock = new TextBlock()
{
Text = Overviews[k],
TextAlignment = TextAlignment.Left,
TextWrapping = TextWrapping.Wrap,
};
btnoverviewcontent.Content = textBlock;
btnoverviewcontent.BorderThickness = new Thickness(0, 0, 0, 0);
btnoverviewcontent.FontStretch = FontStretches.UltraExpanded;
btnoverviewcontent.Margin = new Thickness(5, 5, 5, 5);
WrapPanelGreen.Children.Add(btnoverviewcontent);
btnoverviewcontent.Click += new RoutedEventHandler(OnOverviewClick);
vorrei indirizzarvi a: http://stackoverflow.com/a/2119243/1723823 È una buona ripartizione della funzione di base di WrapPanel con alcuni commenti su come implementare lo scorrimento con esso. – TernaryTopiary
@HenkHolterman, per favore vedi la mia domanda aggiornata. Grazie per il tuo prezioso commento. –
@TernaryTopiary, molte grazie per la vostra direzione. Tuttavia, ho anche valutato di nuovo la pagina collegata e in questo momento completamente. Il mio problema è che i bambini (pulsante) sono programmati e le dimensioni dei bambini sono diverse a seconda del loro contenuto testuale. Pertanto, non posso adottare la seconda soluzione. Per favore, vedi la mia domanda aggiornata. –