Windows 8 Windows应用商店应用程序:如何查找按钮的宽度

Windows 8 Windows应用商店应用程序:如何查找按钮的宽度,windows-8,windows-store-apps,windows-8.1,Windows 8,Windows Store Apps,Windows 8.1,我有一些显示类似面包屑的UI的按钮列表。我需要知道每个按钮的宽度,以知道它们中有多少可以被安排并相应地采取行动。但是按钮的宽度并没有给我按钮的宽度。找到宽度的方法是什么 编辑 这里的示例代码 protected async override void OnNavigatedTo(NavigationEventArgs e) { int width = 0; addHyperLinkButton(folder, out int width); } pri

我有一些显示类似面包屑的UI的按钮列表。我需要知道每个按钮的宽度,以知道它们中有多少可以被安排并相应地采取行动。但是按钮的宽度并没有给我按钮的宽度。找到宽度的方法是什么

编辑

这里的示例代码

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;
    }

通过在按钮上实现逻辑来加载按钮后获取按钮的实际宽度。加载的事件处理程序。

您需要强制渲染该项,或等待渲染该项。然后可以使用
ActualHeight
ActualWidth
属性

要强制渲染,请执行以下操作:

HyperlinkButton button = new HyperlinkButton();
//Force render
button.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
button.Arrange(new Rect(button.DesiredSize));
在这之后,您可以使用
DesiredSize
属性获得元素的
Width
Height

有关更多信息:


您是否尝试过
ActualWidth
属性?ActualWidth给出0,Width给出NaNPost一些代码。你好,Stefan,我做了以下操作:button.Measure(新大小(Double.PositiveInfinity,Double.PositiveInfinity));button.Arrange(新的矩形(0,0,button.DesiredSize.Width,button.DesiredSize.Height));宽度=(int)button.DesiredSize.width;但无论内容属性是什么,此宽度始终为10。所以我想这是行不通的。我遗漏了什么吗?@Subhankar,如果它的值无效,那么在
加载事件发生之前,就没有其他方法可以获取元素的
实际宽度
实际高度
。所以首先尝试加载元素,然后获取他的
ActualWidth
ActualHeight
属性。好的。。。那么,如果它发生在一个页面中,那么一旦加载了所有UI,将调用什么样的事件处理程序?