也许标题让你感到困惑,但问题具体在这里:我有文件XAML
(继承自)。并且我设置它是这样的:ControlTemplate
MyType
ContentControl
Template
DataContext
DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}"
当我想从中获取DataContext
时,MyType
它第一次显示为 null。单击它(它是窗口中的矩形)后,它会变为我需要的对象。我搜索了所有的东西,我正在做的所有事件LeftButtonDown
都没有ApplyTemplate(),UpdateLayout()
方法。即使我称这些方法也无济于事。需要做什么?PS这DataContext
是Parent
这个项目的,我可以发送一个参数但必须有其他解决方案
这是XAML
模板所在的一部分:
<Style TargetType="{x:Type s:Connector}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type s:Connector}">
<Grid Name="grid" DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}">
<Border BorderBrush="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},
Path=BorderBrush}" x:Name="border" BorderThickness="2" Background="Transparent">
<Image Source="/DiagramDesigner;component/Resources/1337238611_port.png"/>
</Border>
<Rectangle Fill="Transparent" Margin="-2"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这就是我想要获取 DataContext 的地方:
public DesignerItem ParentDesignerItem //
{
get
{
if (parentDesignerItem == null)
{
parentDesignerItem = this.DataContext as DesignerItem;
// if (parentDesignerItem==null) parentDesignerItem = (this.Template.FindName("grid", this) as Grid).DataContext as DesignerItem;
}
return parentDesignerItem;
}
set
{
parentDesignerItem = value;
}
}
不得不说,这Style
是在哪XAML
也。Style
DesignerItem