[英]How do I reference top UIElement in ControlTemplate?
In my custom control I have ControlTemplate propety 在我的自定义控件中,我具有ControlTemplate属性
public ControlTemplate ControlTemplate
It can be something like this: 可能是这样的:
<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>
I would like to set Canvas
's data context myself rather than doing it in XAML. 我想自己设置Canvas
的数据上下文,而不是在XAML中进行设置。
So, If I have ControlTemplate - how do I find first child (Canvas in this case) programmatically? 因此,如果我有ControlTemplate,如何以编程方式找到第一个孩子(在这种情况下为Canvas)?
1) set x:Name attribute for Canvas. 1)为Canvas设置x:Name属性。
2) override OnApplyTemplate. 2)覆盖OnApplyTemplate。
3) use (Canvas)GetTemplateChild("CanvasName") for get Canvas. 3)使用(Canvas)GetTemplateChild(“ CanvasName”)获取画布。
ofcourse this class should inherit from Control. 当然,此类应从Control继承。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.