タイトルが混乱しているかもしれませんが、問題は具体的にはここにあります:(から継承する)ための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
。