如何在父画布中定位UserControl

时间:2008-12-14 02:01:37

标签: wpf user-controls wpf-positioning

我想将此UserControl放在Canvas.Left =“168”,Canvas.Top =“213”。

然而,控件出现在角落。我该怎么办?

如果我将值放在此类的使用点,则值将返回为NaN 在这种情况下,我如何获得正确的左值和最高值?

用法:

<Canvas x:Name="DesignerCanvas"
        ClipToBounds="True"
        SnapsToDevicePixels="True">
<Gr:BareNode />
</Canvas>

用户控件:

<UserControl x:Class="DiagramDesigner.BareNode"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<Grid>
    <ContentControl Width="50"
                  Height="50"
                  Padding="2"    
                  Canvas.Left="168" Canvas.Top="213">
        <Ellipse IsHitTestVisible="False" >
            <Shape.Fill>
                <RadialGradientBrush Center="0.2, 0.2" GradientOrigin="0.2, 0.2" RadiusX="0.8" RadiusY="0.8">
                    <GradientStop Color="LightBlue" Offset="0"/>
                    <GradientStop Color="Blue" Offset="0.9"/>
                </RadialGradientBrush>
            </Shape.Fill>
        </Ellipse>
    </ContentControl>
   </Grid>
</UserControl>

1 个答案:

答案 0 :(得分:4)

我不确定你是否尝试过这种方法,但只是从查看XAML看来你正试图在用户控件中设置用户控件的位置。那不行。您需要将它放在使用用户控件的地方

<Canvas x:Name="DesignerCanvas"
    ClipToBounds="True"
    SnapsToDevicePixels="True">
   <Gr:BareNode Canvas.Left="168" Canvas.Top="213"/>
</Canvas>

从用户控件内的ContentControl声明中取出Canvas.Left =“168”Canvas.Top =“213”部分。