Каким перемещать Usecontrol в wpf

211
21 апреля 2018, 17:08

Создал Usercontrol, вывожу его на холст по нажатию на картинку, вопрос заключается в том, как обратиться к этому Usecontrol (чтобы он "реагировал" на нажатии по нему мышкой). Если точнее, что прописать в DataTempate?

private void Image_MouseDown(object sender, MouseButtonEventArgs e)
  {
     var img = sender as Image;
     var url = ((sender as Image).DataContext as Element).DisplayedImageShortUrl;
     if (e.LeftButton == MouseButtonState.Pressed && url == "resistor.png")
     {
        resistor_UC rs = new resistor_UC();
        ic_canvas.ItemsSource = new[] { rs };
     }
     if (e.LeftButton == MouseButtonState.Pressed && url == "battary.png")
     {
        battary_UC btr = new battary_UC();
        ic_canvas.ItemsSource = new[] { btr };
     }
     if (e.LeftButton == MouseButtonState.Pressed && url == "key.png")
     {
        key_UC ky = new key_UC();
        ic_canvas.ItemsSource = new[] { ky };
     }
     if (e.LeftButton == MouseButtonState.Pressed && url == "lamp.png")
     {
        lamp_UC lp = new lamp_UC();
        ic_canvas.ItemsSource = new[] { lp };
     }

  }

Xaml:

<ItemsControl x:Name="ic_canvas" Grid.Column="1">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <Canvas/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

Мысль в том, чтобы сделать на подобии:

<ItemsControl x:Name="ic_menu" Grid.Column="0" Margin="10,57,10,10">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Border BorderThickness="1" BorderBrush="Black">
                    <Image Source="{Binding img}"  Margin="10" Width="100" Height="50" MouseDown="Image_MouseDown"/>
                </Border>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
READ ALSO
C# и DropBox - проверить скопирован ли файл?

C# и DropBox - проверить скопирован ли файл?

Вопрос достаточно простой, но не простойЕсть папка на DropBox, куда время от времени попадает небольшой текстовый файл

210
XMLSerializer Десериализация двух элементов в один список

XMLSerializer Десериализация двух элементов в один список

Можно ли как-то произвести десериализацию разных по названию элементов, но одинакового содержимого в один список?

196
Проблема с преобразование string в datetime

Проблема с преобразование string в datetime

Возникла проблема при преобразовании переменной string в datetime

208
Не срабатывает событие MimeKit

Не срабатывает событие MimeKit

Подскажите пожалуйста, почему может не срабатывать событиеВот мой код

212