我有一些按钮列表,用于显示像UI这样的面包屑。我需要知道每个按钮的宽度,以了解它们中有多少可以安排并采取相应的行动。但是button.Width没有给我按钮宽度。找到宽度的方法是什么?
修改
示例代码
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
int width = 0;
addHyperLinkButton(folder, out int width);
}
private HyperlinkButton addHyperLinkButton(Folder folder, out int width)
{
HyperlinkButton button = new HyperlinkButton();
//button.IsHitTestVisible = false;
button.VerticalAlignment = VerticalAlignment.Bottom;
button.Foreground = new SolidColorBrush(Colors.Black);
button.FontFamily = new FontFamily("Segoe UI Light");
button.FontSize = 28;
button.Content = new CustomTextConverter().Convert(folder.Name, 20);
button.DataContext = folder;
button.Margin = new Thickness(-15);
button.BorderThickness = new Thickness(5);
button.Style = Resources["HyperlinkButtonStyle1"] as Style;
if (!button.Content.Equals(">"))
{
button.Click += button_Click;
}
hierarchy.Children.Add(button);
width = (int)button.ActualWidth;
return button;
}
答案 0 :(得分:0)
通过在Button.Loaded事件处理程序上实现逻辑,在加载按钮后获取按钮的实际宽度。
答案 1 :(得分:0)
您需要强制渲染项目,或等待渲染项目。然后,您可以使用ActualHeight
和ActualWidth
属性。
强制渲染:
HyperlinkButton button = new HyperlinkButton();
//Force render
button.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
button.Arrange(new Rect(button.DesiredSize));
在此之后,您可以使用Width
属性获取元素的Height
和DesiredSize
。
欲了解更多信息: