如何在内容模板中获取子UI元素? [英] How to get child UI elements in a content template?
本文介绍了如何在内容模板中获取子UI元素?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我定义了一个类似于以下内容的ContentTemplate:
< ControlTemplate x:Key =" myTemplate">
< Button Style =" {StaticResource myStyle}">
< StackPanel>
< TextBlock Name =" tbText"文本= QUOT;&的text1 QUOT;的HorizontalAlignment = QUOT;中心" Style =" {StaticResource bigprintStyle}" />
< TextBlock Name =" tbCode"文本= QUOT;(代码1)"的HorizontalAlignment = QUOT;中心" Style =" {StaticResource mediumprintStyle}" />
< / StackPanel>
< / Button>
< / ControlTemplate>
在面板中,我使用上面这样的模板:
< WrapPanel名称= QUOT; pnlCodes" ButtonBase.Click = QUOT; btnReasonCode_Click"的HorizontalAlignment = QUOT;左"余量= QUOT; 2,3,0,3" VerticalAlignment = QUOT;拉伸" MaxWidth = QUOT; 910" ClipToBounds = QUOT;真">
< Button Name =" btn1" Template =" {StaticResource myTemplate}">
< / Button>
< Button Name =" btn2" Template =" {StaticResource myTemplate}">
< / Button>
< Button Name =" btn3" Template =" {StaticResource myTemplate}">
< / Button>
< Button Name =" btn4" Template =" {StaticResource myTemplate}">
< / Button>
< / WrapPanel>
在我的代码中,n返回0,即没有元素。
foreach(pnlCodes.Children中的按钮btn)
{
int n = VisualTreeHelper.GetChildrenCount(btn);
System.Collections.IEnumerable ie = LogicalTreeHelper.GetChildren(btn);
foreach(对象obj in ie)
{
if(obj is DependencyObject)
{
i ++;
}
}
}
如何在按钮内获取我的两个TextBlocks(tbText和tbCode) ?
提前致谢!!!
解决方案
我发现了问题所在。当我试图获取模板子项时,主窗口没有完全加载。
I defined a ContentTemplate like the following:
<ControlTemplate x:Key="myTemplate"> <Button Style="{StaticResource myStyle}"> <StackPanel> <TextBlock Name="tbText" Text="text1" HorizontalAlignment="Center" Style="{StaticResource bigprintStyle}" /> <TextBlock Name="tbCode" Text="(code1)" HorizontalAlignment="Center" Style="{StaticResource mediumprintStyle}" /> </StackPanel> </Button> </ControlTemplate>
In the panel, I use the above template like this:
<WrapPanel Name="pnlCodes" ButtonBase.Click="btnReasonCode_Click" HorizontalAlignment="Left" Margin="2,3,0,3" VerticalAlignment="Stretch" MaxWidth="910" ClipToBounds="True"> <Button Name="btn1" Template="{StaticResource myTemplate}"> </Button> <Button Name="btn2" Template="{StaticResource myTemplate}"> </Button> <Button Name="btn3" Template="{StaticResource myTemplate}"> </Button> <Button Name="btn4" Template="{StaticResource myTemplate}"> </Button> </WrapPanel>
In my code, n returns 0 and ie has no element either.
foreach (Button btn in pnlCodes.Children) { int n = VisualTreeHelper.GetChildrenCount(btn); System.Collections.IEnumerable ie = LogicalTreeHelper.GetChildren(btn); foreach (object obj in ie) { if (obj is DependencyObject) { i++; } } }
How do I get my two TextBlocks(tbText and tbCode) inside the Button?
Thanks in advance!!!
解决方案
I found out the problem. When I tried to get the template children, the main window is not fully loaded.
这篇关于如何在内容模板中获取子UI元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文