Windows 8 Windows应用商店应用程序:如何查找按钮的宽度
我有一些显示类似面包屑的UI的按钮列表。我需要知道每个按钮的宽度,以知道它们中有多少可以被安排并相应地采取行动。但是按钮的宽度并没有给我按钮的宽度。找到宽度的方法是什么 编辑 这里的示例代码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
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,将调用什么样的事件处理程序?