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

时间:2014-09-10 07:03:12

标签: windows-8 windows-store-apps windows-8.1

我有一些按钮列表,用于显示像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;
    }

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

强制渲染:

HyperlinkButton button = new HyperlinkButton();
//Force render
button.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
button.Arrange(new Rect(button.DesiredSize));

在此之后,您可以使用Width属性获取元素的HeightDesiredSize

欲了解更多信息:

UIElement.DesiredSize property