如何计算DataTemplate中加载的任何控件的高度?

时间:2016-08-26 07:11:16

标签: height uwp datatemplate uwp-xaml

我想得到当宽度设置为100时在DataTemplate中加载的控件的高度。我使用了下面的代码,但总是返回0,20的大小。有什么建议吗?

mediaFileURL

1 个答案:

答案 0 :(得分:0)

  

我使用了以下代码,但总是返回0,20的大小。有什么建议吗?

这是因为您没有在布局上呈现ContentControl,您可以像下面这样呈现它:

var record = new UserInfo() { Name = "ASKL ALASO DKADOLD ADKIKAM AMDKI ADKAI AKDKI" };

var contentControl = new ContentControl();
stackPanel.Children.Add(contentControl);   //Add this ContentControl to the childeren collection of a StackPanel to show it
//contentControl.Measure(new Size());
contentControl.Content = record;
contentControl.ContentTemplate = App.Current.Resources["dataTemplate"] as DataTemplate;
contentControl.Measure(new Size(100, Double.PositiveInfinity));            
var size = contentControl.DesiredSize;

然后现在,您可以获得ContentControl的大小,在我这边是94,100。

我不确定这个大小是你真正想要的那个,从你的标题来看,你想要计算DataTemplate中加载的任何控件的高度,但这个大小是ContentControl的大小,我认为您需要的是此GridTextBlockContentControl的高度。要获得这两个控件,您可以在ContentControl完全呈现后执行此类代码:

var grid = contentControl.ContentTemplateRoot as Grid;
var textblock = grid.Children.FirstOrDefault() as TextBlock;

请注意,DesiredSize不是控件的渲染大小,您可以参考UIElement.DesiredSize property的备注部分。