我想得到当宽度设置为100时在DataTemplate中加载的控件的高度。我使用了下面的代码,但总是返回0,20的大小。有什么建议吗?
mediaFileURL
答案 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
的大小,我认为您需要的是此Grid
内TextBlock
或ContentControl
的高度。要获得这两个控件,您可以在ContentControl
完全呈现后执行此类代码:
var grid = contentControl.ContentTemplateRoot as Grid;
var textblock = grid.Children.FirstOrDefault() as TextBlock;
请注意,DesiredSize
不是控件的渲染大小,您可以参考UIElement.DesiredSize property的备注部分。