0

也许标题让你感到困惑,但问题具体在这里:我有文件XAML(继承自)。并且我设置它是这样的:ControlTemplateMyTypeContentControlTemplateDataContext

DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}"

当我想从中获取DataContext时,MyType它第一次显示为 null。单击它(它是窗口中的矩形)后,它会变为我需要的对象。我搜索了所有的东西,我正在做的所有事件LeftButtonDown都没有ApplyTemplate(),UpdateLayout()方法。即使我称这些方法也无济于事。需要做什么?PS这DataContextParent这个项目的,我可以发送一个参数但必须有其他解决方案

这是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也。StyleDesignerItem

4

1 回答 1

0

问题出在我的算法 PS 中,我从中恢复了一些信息SQL,并添加了 2 倍Connectors的空参数,当我想访问它时,它给了我这些空对象。

于 2012-07-11T07:50:22.793 回答