【发布时间】:2016-07-06 19:35:48
【问题描述】:
我想在代码隐藏中访问另一个元素正在使用的原始控件模板中的一个命名元素。
这是一个 XAML 代码示例(显然原始代码更复杂,或者我只是在 XAML 中这样做):
<Window x:Class="Temp.MainWindow" Title="MainWindow">
<Window.Resources>
<ControlTemplate x:Key="MyTemplate" TargetType="{x:Type Expander}">
<Expander Header="Some header">
<StackPanel>
<Grid Name="MyGrid"/>
</StackPanel>
</Expander>
</ControlTemplate>
</Window.Resources>
<Grid>
<Expander Name="expander" Template="{DynamicResource MyTemplate}"/>
</Grid>
</Window>
我尝试过的:
public MainWindow()
{
InitializeComponent();
Grid grid = expander.Template.FindName("MyGrid", expander) as Grid;
}
我也试过
Grid grid = expander.Template.Resources.FindName("MyGrid") as Grid;
但g 始终是null。
我看过:
- How do I access an element of a control template from within code behind?
- How to access a WPF control located in a ControlTemplate
- How do I programmatically interact with template-generated elements Part I
上面的链接是我获得正在使用的代码的方式,但出于某种原因,g 始终是null。我对 ContentTemplate 做错了吗?任何帮助将不胜感激!
【问题讨论】:
标签: c# wpf xaml controltemplate