在我的自定义控件中,我有ControlTemplate propety
public ControlTemplate ControlTemplate
可能是这样的:
<map:IdattMapLayer.ControlTemplate>
<ControlTemplate>
<Canvas
DataContext="{Binding
Converter={StaticResource ObjectToTrackedAssetConverter}}">
<Button
Style="{StaticResource LooklessButtonStyle}"
Width="{Binding PushpinWidth}" Height="{Binding PushpinWidth}"
Margin="{Binding PushpinMargin}"
Command="{Binding
Path=DataContext.SelectedPushpinChangedCommand,
ElementName=LayoutRoot}"
CommandParameter="{Binding}"
Cursor="Hand">
<Ellipse
Width="{Binding PushpinWidth}"
Height="{Binding PushpinWidth}"
Stroke="Black"
Fill="{Binding IsGPSDataRecent,
Converter={StaticResource BoolToGreenRedBrushConverter}}"
StrokeThickness="1">
</Ellipse>
</Button>
</Canvas>
</ControlTemplate>
</map:IdattMapLayer.ControlTemplate>
我想自己设置Canvas
的数据上下文,而不是在XAML中进行。
那么,如果我有ControlTemplate - 如何以编程方式找到第一个子节点(在本例中为Canvas)?
答案 0 :(得分:1)
1)为Canvas设置x:Name属性。
2)覆盖OnApplyTemplate。
3)使用(Canvas)GetTemplateChild(&#34; CanvasName&#34;)获取Canvas。
当然这个类应该继承自Control。