也许标题让你感到困惑,但问题具体在这里:我有XAML
ControlTemplate
文件MyType
{继承自ContentControl
)。在那Template
我设置DataContext
就像这样:
DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}"
当我想从DataContext
获取MyType
时,它首次显示为null。点击它(它是窗口中的矩形)后,它会变为对象我需要的东西。我搜索了所有事情,所有事件我在LeftButtonDown
中所做的事情没有ApplyTemplate(),UpdateLayout()
方法。即使我称这些方法也无济于事。需要做什么? P.S此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
{{1}}。
答案 0 :(得分:0)
问题在于我的算法PS i从SQL
恢复一些信息,并且使用空参数再添加2倍Connectors
,当我想要访问它时,会给我这些空对象。