Как разместить UserControl на родительском холсте

Я хочу разместить этот UserControl в Canvas.Left = "168", Canvas.Top = "213".

Тем не менее, элемент управления отображается в углу. Что мне делать?

Если я помещу значения в точке использования для этого класса, значения возвращаются как NaN. В таком случае, как я могу получить правильные значения Left и Top?

Применение:

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

UserControl:

<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>
14.12.2008 02:01:37
1 ОТВЕТ
РЕШЕНИЕ

Я не уверен, пробовали ли вы это или нет, но просто глядя на 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 внутри пользовательского элемента управления.

4
14.12.2008 02:35:03
Чтобы получить свойства Left и Top, вы используете два статических метода класса Canvas - Canvas.GetLeft и Canvas.GetTop. Ищите их на MSDN.
Boyan 14.12.2008 05:15:56