1

我想把这个 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>
4

1 回答 1

4

我不确定您是否尝试过此操作,但仅从查看 XAML 来看,您似乎正在尝试在用户控件内设置用户控件的位置。那是行不通的。你需要把它放在你使用用户控件的地方

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

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

于 2008-12-14T02:35:03.603 回答