Tôi có một WrapPanel và các nút được lập trình và thêm vào làm con của WrapPanel. Vì vậy, tôi muốn hiển thị thanh cuộn dọc khi WrapPanel có đầy đủ các nút (trẻ em) để có thể thêm nhiều nút liên tục hơn.Cách làm cho WrapPanel hiển thị thanh cuộn dọc khi trẻ có đầy hoặc không có ScrollViewer
Nếu chúng ta cần một thanh cuộn hiển thị, chúng ta có phải mang theo ScrollViewer không? Không có cách nào mà không có ScrollViewer? Những gì tôi muốn có được, bởi vì WrapPanel có kích thước nhỏ, tôi muốn một thanh cuộn chỉ được hiển thị khi cần thiết (như đầy đủ của trẻ em).
Mã của tôi là đơn giản như dưới đây (WrapPanel bên lưới và lưới là bên trong TabControl)
Rất cám ơn luôn cho sự xuất sắc của mình.
Cập nhật: Tôi đã gặp khó khăn trong việc tìm giải pháp trên internet trong vài ngày. Và tôi đã thử đặt WrapPanel bên trong ScrollViewer. Tuy nhiên, mặc dù tôi đặt VerticalScroll để tự động, thanh cuộn dọc luôn được hiển thị ngay cả khi WrapPanel không có bất kỳ con nào.
Hơn nữa, khi tôi cố ý làm cho WrapPanel đầy trẻ em (nút), thanh cuộn dọc của ScrollViewer không cung cấp tính khả dụng của cuộn xuống. Và các nút ở dòng dưới cùng của WrapPanel hiển thị cắt và nhiều hơn nữa, tôi không thể cuộn xuống để xem ngoài nút ở dòng dưới cùng. Tôi đã thực hiện các nút được đặt ngoài dòng dưới cùng của WrapPanel cố ý.
Có hoặc không có, tôi muốn thanh cuộn dọc được hiển thị khi chỉ cần (đầy đủ trẻ em). Có vẻ như rất dễ thực hiện. Nhưng rất khó để làm cho nó hoạt động đúng.
Giải pháp: được cung cấp bởi ông 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>
Và dưới đây là mã đơn giản của tôi mà làm cho nút lập trình và thêm như một đứa trẻ của 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);
tôi sẽ hướng dẫn bạn đến: http://stackoverflow.com/a/2119243/1723823 Đó là một sự cố tốt về chức năng cơ bản của WrapPanel với một số nhận xét về cách triển khai cuộn với nó. – TernaryTopiary
@HenkHolterman, vui lòng xem câu hỏi được cập nhật của tôi. Cảm ơn bạn đã bình luận quý giá của bạn. –
@TernaryTopiary, Rất cám ơn sự chỉ đạo của bạn. Tuy nhiên, tôi cũng đã đánh giá trang được liên kết và tại thời điểm này một lần nữa. Vấn đề của tôi là Trẻ em (nút) được lập trình và kích thước của trẻ khác nhau tùy theo nội dung văn bản của chúng. Do đó, tôi không thể áp dụng giải pháp thứ hai..Xin vui lòng xem câu hỏi được cập nhật của tôi. –