Связь между UseControl

213
03 мая 2018, 06:44

Доброе утро, вечер, день. Мой вопрос заключается в том, как связать эллипсы на разных Usecontrol. То есть у меня есть два UseControl представлены в виде элементов электрической цепи (см. Скриншот)

Идея заключается в том, что при нажатии правой кнопки мыши будет запоминаться один эллипс, при "отжатии" другой.

Через window.resourse подключил usecontrol (ну чтоб можно было обращаться к элементу внутри usecontrol)

<Window.Resources>
    <DataTemplate DataType="{x:Type local:Ampermetr_UC}">
        <local:Ampermetr_UC x:Name="Ampermetr"/>
    </DataTemplate>
    <DataTemplate DataType="{x:Type local:battary_UC}">
        <local:battary_UC x:Name="Battary"/>
    </DataTemplate>
    <DataTemplate DataType="{x:Type local:key_UC}">
        <local:key_UC x:Name="Key"/>
    </DataTemplate>
    <DataTemplate DataType="{x:Type local:lamp_UC}">
        <local:lamp_UC x:Name="Lamp"/>
    </DataTemplate>
    <DataTemplate DataType="{x:Type local:nagrev_UC}">
        <local:nagrev_UC x:Name="Nagrev"/>
    </DataTemplate>
    <DataTemplate DataType="{x:Type local:resistor_UC}">
        <local:resistor_UC x:Name="Resistor"/>
    </DataTemplate>
    <DataTemplate DataType="{x:Type local:uzel_UC}">
        <local:uzel_UC x:Name="Uzel"/>
    </DataTemplate>
    <DataTemplate DataType="{x:Type local:Voltmetr_UC}">
        <local:Voltmetr_UC x:Name="Voltmetr"/>
    </DataTemplate>
</Window.Resources>

Сам usecontrol (то есть usecontrol на холсте и который можно перемещать и тд)

<ItemsControl x:Name="ic_canvas" Grid.Column="1">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <Canvas/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <ContentControl>
                    <ContentPresenter Content="{Binding SelectedControl}" MouseDown="ContentPresenter_MouseDown" MouseMove="ContentPresenter_MouseMove" MouseUp="ContentPresenter_MouseUp">
                        <ContentPresenter.RenderTransform>
                            <TransformGroup>
                                <TranslateTransform X="{Binding Pos.X}" Y="{Binding Pos.Y}"/>
                            </TransformGroup>
                        </ContentPresenter.RenderTransform>
                    </ContentPresenter>

                </ContentControl>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

Код с помощью, которого я буду строить линии между эллипсами

      <ItemsControl x:Name="ic_EdgeLine" Grid.Column="2">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <Canvas/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Line X1="{Binding A.Pos.X}" Y1="{Binding A.Pos.Y}" X2="{Binding B.Pos.X}" Y2="{Binding B.Pos.Y}" Stroke="Black" StrokeThickness="2" />
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

Класс в который передаются данные об эллипсах, которые будут выделены.

 public class EdgeLine
  {
     public Ellipse A { get; set; }
     public Ellipse B { get; set; }
  }

Я разобрался, как обратится к эллипсу внутри Usecontrol через код "NameOfUseControl.ElementOfUsecontrol"

Вопрос заключается в том, как добавить обработчик мыши только для эллипсов этих Usecontrol.

READ ALSO
LINQ Запрос по Dictionary с битовой маской

LINQ Запрос по Dictionary с битовой маской

Помогите, пожалуйста, решить задачкуДано:

216
Как выполнять task в отдельном потоке?

Как выполнять task в отдельном потоке?

Есть метод, который читает журнал событий:

195
Собрать универсальное C# приложение

Собрать универсальное C# приложение

Недавно сделал для себя открытие - при сборкеNET-приложения я могу выбрать разрядность целевой платформы

178
C# Ошибка в decrypt

C# Ошибка в decrypt

Как справиться с ошибкой

194